I don\'t undestand how this code works:
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
what does while Fa
while True:
means that it will loop forever.
while False:
means it won't execute.
it is saying if something is not true do this. for example:
while (0 == 1) == False: # this statement is true because 0 does not equal 1
print('hi') # this will create a infinite loop of hi.
meanwhile.
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.
A while loop checks the condition (well, the expression) behind the while
before each iteration and stops executing the loop body when the condition is False
.
So while False
means that the loop body will never execute. Everything inside the loop is "dead code". Python-3.x will go so far that it "optimizes" the while
-loop away because of that:
def func():
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
import dis
dis.dis(func)
Gives the following:
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
That means the compiled function won't even know there has been a while
loop (no instructions for line 3-6!), because there is no way that the while
-loop could be executed.