Cod*_*man -1 python infinite-loop
while 1:1
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是什么?有没有办法检查上面的循环是做什么或什么都没有?一种方法是在while循环体中输入print语句,如:
while 1:
1
print "2"
Run Code Online (Sandbox Code Playgroud)
但是,如果没有在while循环体中输入任何新内容,我们可以检查循环是否至少在做某事吗?
你可以这样检查:
>>> def f():
... while True: 42
...
>>>
>>> import dis
>>> dis.dis(f)
2 0 SETUP_LOOP 10 (to 13)
>> 3 LOAD_GLOBAL 0 (True)
6 POP_JUMP_IF_FALSE 12
9 JUMP_ABSOLUTE 3
>> 12 POP_BLOCK
>> 13 LOAD_CONST 0 (None)
16 RETURN_VALUE
>>>
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,它除了循环之外什么都不做.
我很惊讶,说实话,它甚至没有在某处加载给定的值.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |