“while False”是什么意思?

2024-05-14 00:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我不理解这段代码的工作原理:

i = 1
while False:
    if i % 5 == 0:
        break
    i = i + 2
print(i)

什么是while False?什么是假的?我不明白。。。


Tags: 代码falseif原理printbreakwhile
3条回答

在每次迭代之前,while loop检查while后面的条件(好吧,表达式),当条件为False时停止执行循环体。

所以while False意味着循环体永远不会执行。循环中的所有内容都是“死代码”。Python-3.x将进行到“优化”这个while循环的程度,因为:

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循环。

while True:

意味着它将永远循环。

while False:

意味着它不会执行。

它是说,如果有什么不真实的事情,就这样做。例如:

while (0 == 1) == False: # this statement is true because 0 does not equal 1
     print('hi') # this will create a infinite loop of hi.

与此同时。

while (0 == 0) == False: # this statement is false since 0 does equal 0.
     print('hi') # this will do nothing since the past statement is false.

相关问题 更多 >