私は現在、リンダPythonのチュートリアルをつもりだと私は次のコードを参照して発電機のセクションで:Python:for-else間のforループは、how/whyが動作しますか?
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
else:
return True
を私が最初にそれをキャッチしませんでしたが、私は私が気づいコードを行っていたとして、 else
キーワードは、同じ字下げレベルのif
との間にfor-loop全体を持っていました。私の驚いたことに、コードは実行されるだけでなく、実際には正しい動作を生成します。
forループを単純な0ステートメントに置き換えると、予期したインタープリタエラーが発生します。
この構文の背後にある理由は何ですか?なぜループ文では機能するのですか?print()
などの理由はありません。
は参考のために、私は、コードは次のように書かれると予想しているでしょう:
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
return True
これはすべて正常に見えます。実際には(2番目のコードブロックで)期待通りの方法です。なぜならbreakはループ内で呼び出されないからです – wim