2016-11-09 5 views
0

私は実際にはPythonには新しいです。それを学びながら、私はこのコードを見つけました。pythonキーワードcontinueは最終的にキーワードに制御を移しています

continue文で遭遇すると、 制御がループの始めに移りますが、この場合、最終的な文に移ってそこから実行されています。これはPythonのバグですか?誰かがこれを私に説明してもらえますか?ありがとう。

def askint(): 

while True: 

    try: 
     val =int(input("pleas enter an integer ")) 
    except: 
     print ("it seems like you did'n enter an integer ") 
     continue 
    else: 
     print ("yep that's an integer thank you") 
     break 

    finally: 
     print ('control is now on finally me') 
    print ('i am also getting executed  ')  



askint() 
+0

を助けるだろうと思いません。 –

+0

'' 'finally''ブロックは、' '' except'''と '' except''の後に*常に*実行されています。 ''同じ '' 'try''節の' 'else''ブロックです。 –

答えて

1

これはdocumentation for the continue statementに記載されています

するとパスがfinally節が本当に次のループサイクルを開始する前に実行されるfinally節、でtry文の外に制御し続けます。

(重点鉱山)

はい、whileループが存在せず、あなたがポップアップSyntaxErrorを持っていると思います。 continuewhileの中にあり、finallyは常に最終的なものになる可能性があるためです。途中で実行されます。

+0

実際には正しいスタイルを正しく使用していないコードですか? –

+0

それは悪いスタイリングではない、それはちょうど '最終的に'本当にここで必要ではないです。クリーンアップアクションを実行する場合は、「finally」を使用する必要があります。あなたがそれをする必要がなければ、あなたは@ sky_1を使用しません –

2

finallyコードは常にtry/exceptブロックで実行されます。

continueはスキップしません(またはPythonのバグ)。

1

finallyは、何が起こっても実行されなければならないので、です。それはfinallyと呼ばれています理由です

:あなたが持っているものが成功しようとしたかイオン以外を上げたかどうかは関係ありませんが、それは常に実行です。

関連する問題