関数呼び出しがグローバル変数を更新しない
この質問は、最初に False として割り当てられたグローバル変数が更新されないというプログラミングの課題を探ります。関数内で参照されると更新されません。関数がグローバル変数の値を変更しているにもかかわらず、メイン プログラムのループは実行を続け、無限ループにつながります。この問題を理解するには、名前空間と変数のスコープの概念を詳しく理解する必要があります。
名前空間と変数のスコープ
プログラミングでは、すべての関数とモジュールが独自の名前空間を作成します。名前空間は、そのスコープ内で既知でアクセス可能な名前 (変数、関数など) のコレクションです。関数内で変数に値が割り当てられると、同じ名前のグローバル変数が存在する場合でも、関数の名前空間に新しい変数が作成されます。
グローバル変数の使用
この場合、「done」というグローバル変数が関数内で参照されると、同じ名前の新しいローカル変数が関数の名前空間に作成されます。このローカルな「完了」はグローバルな「完了」とは異なります。ローカルの「done」を変更しても、グローバル変数には影響しません。
解決策
これを解決するには、global キーワードを使用して、グローバル変数を明示的に参照する必要があります。機能。グローバル Done を使用することにより、この関数は、新しいローカル変数を作成するのではなく、グローバル "done" 変数にアクセスするようにインタープリタに指示します。
修正コード
問題を解決するには
<code class="python">def function(): global done for loop: code if not comply: done = True</code>
説明
global don を使用すると、関数内で使用される変数とグローバル変数の間の接続が確立されます。関数が Done の値を変更すると、最初に参照されたのと同じグローバル変数が更新されます。これにより、関数が Done を True に設定したときに、メイン プログラムの while ループが意図したとおりに終了することが保証されます。
以上が関数呼び出しでグローバル変数が更新されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。