“while False”是什么意思?

新手上路,请多包涵

我不明白这段代码是如何工作的:

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

while False 是什么意思?什么必须是假的?我不明白…

原文由 Capybara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3k
1 个回答

while 循环 在每次迭代之前检查 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 循环不可能被执行。

原文由 MSeifert 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题