ホームページ > バックエンド開発 > Python チュートリアル > Python で外部スコープの非大域変数を変更するにはどうすればよいですか?

Python で外部スコープの非大域変数を変更するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-16 12:06:15
オリジナル
315 人が閲覧しました

How Can I Modify Non-Global Variables in Outer Scopes in Python?

Python の外側スコープの非グローバル変数の変更

Python では、明示的にグローバルとして宣言されていない限り、関数内の変数は通常、ローカル スコープに属します。ただし、外部 (囲み) の非グローバル スコープで定義された変数を変更する必要がある場合があります。この質問では、これを実現する方法について説明します。

コード例を考えます:

def A():
    b = 1
    def B():
        # Access to 'b' is possible here.
        print(b)
        # Direct modification of 'b' fails.
    B()
A()
ログイン後にコピー

関数 B の変数 b は、非グローバルな囲みスコープ内に存在します。 b を直接変更しようとすると、UnboundLocalError が発生します。 b がグローバル レベルで宣言されていないため、グローバル キーワードは使用できません。

Python 3 解決策:

非ローカル スコープ (Python 3.x)この問題を解決するために使用されたもの:

def A():
    b = 1
    def B():
        nonlocal b  # Nonlocal keyword
        b = 2
    B()
    print(b)  # Output: 2
A()
ログイン後にコピー

Python 2解決策:

可変オブジェクト (Python 2.x):

変数を直接再割り当てする代わりに、可変オブジェクト (リスト、辞書など) を使用し、その値を変更します:

def A():
    b = []
    def B():
        b.append(1)  # Mutation of 'b'
    B()
    B()
    print(b)  # Output: [1, 1]
A()
ログイン後にコピー

以上がPython で外部スコープの非大域変数を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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