首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python新AST优化器

python新AST优化器
EN

Stack Overflow用户
提问于 2018-11-10 20:46:30
回答 1查看 400关注 0票数 3

来自python3.7 有什么新鲜事吗

常量折叠已从peephole优化器移到新的AST优化器,后者能够更一致地执行优化。

这个新的AST优化器能够执行什么优化,它与窥视孔优化器有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2018-11-10 21:46:01

如果您阅读相关的错误 报告,它们包含大部分详细信息。其中大部分都是非常枯燥的东西,对大多数代码来说并不重要,这就是为什么它们没有在“什么是新的”中包含细节。

重要的例子通常是很少遇到的奇怪情况,但是peephole优化器(它不能进行更高级别的计算,只是简单的字节代码就地重写)无法处理,例如在Python 3.6上:

代码语言:javascript
复制
>>> 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:

代码语言:javascript
复制
>>> 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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53243242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档