関数呼び出しでグローバル変数が更新されないのはなぜですか?

Barbara Streisand
リリース: 2024-10-19 12:00:29
オリジナル
574 人が閲覧しました

Why Does Function Call Not Update Global Variable?

関数呼び出しがグローバル変数を更新しない

この質問は、最初に 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート