python - python新的AST优化器
解决方案
如果您阅读相关的错误 报告,它们会包含大部分详细信息。其中大部分都是非常枯燥的东西,对大多数代码来说并不重要,这就是为什么它们没有在“新功能”中包含细节的原因。
重要的示例通常是很少遇到的奇怪情况,但窥孔优化器(无法进行更高级别的评估,只是简单的字节码重写)无法处理,例如在 Python 3.6 上:
>>> import dis
>>> dis.dis('if True: pass') # Recognizes simple case and omits whole block
1 0 LOAD_CONST 0 (None)
2 RETURN_VALUE
>>> dis.dis('if True and 1: pass') # Can't recognize more complex case
1 0 LOAD_CONST 0 (True)
2 POP_JUMP_IF_FALSE 8
4 LOAD_CONST 1 (1)
6 POP_JUMP_IF_FALSE 8
>> 8 LOAD_CONST 2 (None)
10 RETURN_VALUE
而在 3.7 上:
>>> import dis
>>> dis.dis('if True: pass') # Recognizes simple case and omits whole block
1 0 LOAD_CONST 0 (None)
2 RETURN_VALUE
>>> dis.dis('if True and 1: pass') # Handles more complex case too
1 0 LOAD_CONST 0 (None)
2 RETURN_VALUE
推荐阅读
- react-native - Jitsi-Meet SDK - 获取来电推送提醒 React Native
- sql-server - TSQL:全年/每月的连续周期
- java - 在 XML 中,必须填写和添加附件的字段之一也是强制性的
- c++ - 用指针创建静态数组?
- javascript - 删除子元素jquery
- javascript - 修改模板内容失败
- java - jdbc:前端java,后端Oracle 10g express版
- angular - 打字稿版本 3.7.2 和 Angular
- combinations - 在概率上相同的项目被视为不同的项目?
- node.js - 如何将 vuejs - express 应用程序部署到本地 Ubuntu?