作者:路啦Nantale | 来源:互联网 | 2023-02-01 16:23
我不明白这段代码是如何工作的:
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
什么呢while False
?什么是假的?我不明白......
1> MSeifert..:
甲while循环检查后面的条件(井,表达)while
每次迭代之前和停止执行循环体当条件为False
.
所以while False
意味着循环体永远不会执行.循环中的所有内容都是"死代码".到目前为止,Python-3.x将"优化" while
-loop,因为:
def func():
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
import dis
dis.dis(func)
给出以下内容:
Line Bytecode
2 0 LOAD_CONST 1 (1)
3 STORE_FAST 0 (i)
7 6 LOAD_GLOBAL 0 (print)
9 LOAD_FAST 0 (i)
12 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
15 POP_TOP
16 LOAD_CONST 0 (None)
19 RETURN_VALUE
这意味着编译后的函数甚至不会知道有一个while
循环(没有第3-6行的指令!),因为没有办法while
可以执行-loop.