ホームページ  >  記事  >  バックエンド開発  >  Python3 における非ローカルとグローバルの使用法と違いの紹介 (例付き)

Python3 における非ローカルとグローバルの使用法と違いの紹介 (例付き)

不言
不言転載
2019-03-07 17:23:093986ブラウズ

この記事では、Python3 における非ローカルとグローバルの使い方と違いを紹介します (例付き)。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

キーワード非ローカル

Python 2.xでは、クロージャは外部関数の変数を読み取ることのみができますが、上書きすることはできません。この問題を解決するために、Python 3.x では nonlocal キーワードが導入され、クロージャ内で非ローカル変数を宣言すると、インタープリタは外部関数で変数名を見つけることができます。

注: キーワード nonlocal: は python3.X に表示されるため、python2.x では直接使用できません。
キーワード global

Python には 2 つのスコープしかありません: グローバル スコープそしてローカルスコープ。グローバル スコープは、現在のコードが配置されているモジュールのスコープを指し、ローカル スコープは、現在の関数またはメソッドのスコープを指します。ローカル スコープのコードは、外部スコープ (グローバル スコープを含む) の変数を読み取ることはできますが、変更することはできません。変更したい場合は、ここで global キーワードを使用する必要があります

キーワード nonlocal の機能は、キーワード global と似ています。nonlocal キーワードを使用して変更できます。ネストされた関数内 ネストされたスコープ内の変数。
2 つの例を見てください
例 1

name = 'pythontab'
def func()
global name
name = 'pythontab.com'
func()
print(name)

結果:

pythontab.com

例 2

def func():
name = 'pythontab'
def foo():
    nonlocal name
    name = 'pythontab.com'
foo()
print(name)
func()

結果:

pythontab.com

例 2 では、name の値を変更するために global キーワードが使用されていないことに注意してください。

まとめ

主な違いは次の 2 点です。

  1. 両者の機能は異なります。 global キーワードで変数を変更した後、その変数はグローバル変数としてマークされます。変数の変更とは、グローバル変数を変更することです。nonlocal キーワードで変数を変更した後、上位レベルの関数でローカル変数としてマークされます。上位関数にローカル変数が存在しない場合、このローカル変数が存在すると非ローカルな場所でエラーが発生します(非ローカルな変更変数を使用する最上位関数は必ずエラーを報告します)。
  2. 両者の使用範囲は異なります。 global キーワードは、トップレベル関数や入れ子関数を含むどこでも使用できます。変数が以前に定義されていない場合でも、グローバル変更の直後に使用できます。一方、nonlocal キーワードは入れ子関数でのみ使用できます。外側 対応するローカル変数がレイヤー関数で定義されている場合、エラーが発生します (1 を参照)

以上がPython3 における非ローカルとグローバルの使用法と違いの紹介 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。