私はこのコードがどのように動作するかundestandしません:「間違っている」とはどういう意味ですか?
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
while False
を何?何が偽でなければならないのですか?私はそれを取得しません...
私はこのコードがどのように動作するかundestandしません:「間違っている」とはどういう意味ですか?
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
while False
を何?何が偽でなければならないのですか?私はそれを取得しません...
while loopは、各反復の前にwhile
の後ろの条件(よく、式)をチェックし、条件がFalse
のときにループ本体の実行を停止します。
したがってwhile False
は、ループ本体が決して実行されないことを意味します。ループ内のすべてが「デッドコード」です。次
def func():
i = 1
while False:
if i % 5 == 0:
break
i = i + 2
print(i)
import dis
dis.dis(func)
与える:Pythonの-3.xのは、これまでのところ、それはwhile
は、そのため離れ-loop「最適化」ということになります
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
ループが実行される可能性がないため、while
ループがあることを知っています(3-6行目の説明はありません)。
pyをastに変換するにはどうすればよいですか? –
@SzabolcsDombi抽象構文ツリーではなく、逆アセンブルされたバイトコードです。詳細については、[disモジュールのドキュメント](https://docs.python.org/3/library/dis.html)を参照してください。しかし、一般的には、前述の 'import dis'に続いて' dis.dis(the_function) 'を使って「バイトコードを取得する」ことができます。 – MSeifert
while True:
は、永久にループすることを意味します。
while False:
は実行されません。
私はこの答えがなぜ下降したのか分かりません。それは他の人ほど詳細ではありませんが、それは間違っているわけではありません、回答者が質問を読むことを気にしなかったことを示唆していません、否定的なスコアを値するものではありません。 – user234461
これは何かが真実ではないと言っています。その間に、
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.
'while False' =>決して実行されないループ。 –
@capybaraこのコードを実行することでできた可能性があります。なぜあなたはこれをstackoverflowで尋ねましたか? –