関数とループの変数スコープの違い
この質問は、関数内でグローバル変数が更新されない問題を解決します。無限ループ。指定されたコード スニペットは次のとおりです。
<code class="python">done = False def function(): for loop: code if not comply: done = True #let's say that the code enters this if-statement while done == False: function()</code>
提供された説明によると、この問題の理由は関数とループの変数のスコープにあることが示唆されています。 Python では、関数はグローバル名前空間とは別に独自の名前空間を作成します。したがって、関数内でdoneに値を代入しても、グローバル変数doneは変更されません。
この問題を解決するには、関数内でglobalキーワードを使用してグローバル変数に明示的にアクセスすることを推奨しています。
<code class="python">def function(): global done # Access the global variable for loop: code if not comply: done = True</code>
global を使用すると、関数はグローバル変数を変更でき、if 条件が満たされたときに無限ループを効果的に終了できます。
答えはさらに、デバッガーを使用するなどのデバッグ手法を提案しています。または、ステートメントを出力して実行フローを追跡し、問題が発生した場所を特定します。
以上が関数内でグローバル変数が更新されず、無限ループが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。