Python 3 の「非ローカル」の力
Python プログラミングでは、変数はスコープに従って分類できます。
ただし、場合によっては、これらのスコープ間のギャップを埋める必要がある場合があります。ここで、「nonlocal」キーワードが登場します。
「nonlocal」を理解する
「nonlocal」は、Python 3 で存在する変数を宣言するために使用されます。スコープはより広いですが、グローバルとして宣言されていません。これにより、同じ名前のグローバル変数に影響を与えることなく、囲まれた関数から変数にアクセスして変更することができます。
「非ローカル」の影響
違いを説明するには、次のことを考えてください。なしの次の例"nonlocal":
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
出力:
inner: 2 outer: 1 global: 0
この場合、inner() 関数内の変数 x は、関数内の x から独立した新しいローカル変数とみなされます。 inner() 関数とグローバル x.
次に、次を使用してコードを変更しましょう。 "nonlocal":
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
出力:
inner: 2 outer: 2 global: 0
このシナリオでは、"nonlocal" キーワードにより、inner() 関数内の x 変数が x 変数を参照および変更できるようになります。アウター()関数内。 inner() 関数内で行われた変更は、outer() 関数内に保持されます。
「global」との違い
「nonlocal」は「global」キーワードとは異なりますこれは、囲まれたスコープから変数にアクセスして変更できるのに対し、「グローバル」は真にグローバルなスコープから変数にアクセスして変更するという点です。
上記の例で「global」を使用すると、次の出力が得られます。
inner: 2 outer: 1 global: 2
この場合、inner() 関数内の x 変数は、 global x とその変更は、outer() 内の値ではなく、グローバル変数の値に影響します。 function.
結論
「非ローカル」は、Python 3 の囲まれたスコープから変数にアクセスして変更するための強力なメカニズムを提供します。これにより、グローバル変更の落とし穴を回避できます。ネストされた関数内で変数を管理し、より組織化されたモジュール形式のコード構造を維持します。
以上がPython の「nonlocal」キーワードは、入れ子関数のスコープにおける「global」とどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。