发布于 2018-11-10 21:46:01
如果您阅读相关的错误 报告,它们包含大部分详细信息。其中大部分都是非常枯燥的东西,对大多数代码来说并不重要,这就是为什么它们没有在“什么是新的”中包含细节。
重要的例子通常是很少遇到的奇怪情况,但是peephole优化器(它不能进行更高级别的计算,只是简单的字节代码就地重写)无法处理,例如在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_VALUEhttps://stackoverflow.com/questions/53243242
复制相似问题