関数とグローバル変数を扱う場合、それらのスコープと相互作用がコードの動作にどのような影響を与えるかを理解することが重要です。関数がグローバル変数の更新に失敗し、予期しない結果を招く特定のケースを見てみましょう。
次のコードを考えてみましょう。
<code class="python">done = False def function(): for loop: code if not comply: done = True # Let's assume the code enters this if-statement while done == False: function()</code>
お気づきのとおり、これはコードは、done を True に設定した後でも function() を実行し続けます。その理由は、function() が独自のローカル名前空間を作成し、その関数内の変数に加えられた変更がグローバル スコープに反映されないためです。代わりにグローバル変数を使用するには、関数内で global キーワードを使用してそのグローバルな性質を明示的に宣言する必要があります。
<code class="python">def function(): global done for loop: code if not comply: done = True</code>
global キーワードを組み込むことで、グローバル変数とそのローカル変数の間にリンクを確立します。関数内で対応するもの。その結果、関数内で行われた変更はグローバル スコープに直接反映され、done が True になると while ループが終了します。
対照的に、この例では:
<code class="python">done = False while done == False: for loop: code if not comply: done = True # Let's assume the code enters this if-statement</code>
done 変数は while ループのスコープ内で定義されているため、ループの外で定義された Done 変数の影響を受けません。したがって、ループのスコープ内で Done が True に設定されている場合、while ループは期待どおりに終了します。
変数のスコープとグローバル変数に対する関数の影響を理解することは、堅牢で予測可能なコードを作成するために不可欠です。関数がグローバル変数とどのようにやり取りするかを常に注意深く検討し、関数内で行われた変更が意図したとおりにグローバル スコープに反映されるように、global キーワードを慎重に使用することを常に忘れないでください。
以上が関数はグローバル変数にどのような影響を与えるのでしょうか?スコープとインタラクションの謎を解くの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。