Python では、変数が参照される場合、ローカル スコープ (Local)、ネストされたスコープ (囲み関数ローカル)、およびグローバル スコープに基づいて変数の検索が行われます。ドメイン (Global)、組み込みスコープ (builtins モジュール) の順に出力されます。これがいわゆる LEGB ルールです。つまり、Python が変数を参照する順序は、現在のスコープのローカル変数 -> 外部スコープの変数 -> 現在のモジュールのグローバル変数 -> Python の組み込み変数です。
ただし、関数内の変数に値を割り当てる場合、最初に変数を見つけてからその変数に値を割り当てるという上記の LEGB ルールに従いません。 Python では、関数内の変数に値を代入する場合、次の規則があります。「関数内の変数名に値を代入する場合 (式内で参照するのではなく)、Python は常に変数名を作成または変更します。」その関数でグローバル変数として宣言されていない限り、ローカル スコープの「Python におけるグローバル グローバル変数と非ローカル ローカル変数」
グローバル キーワードは次のとおりです。関数または他のローカル スコープでグローバル変数を使用するために使用されます。
#
gcount = 0 #定义了一个全局变量,(可以省略global关键字) def global_test(): print (gcount) #不修改,只是引用全局变量,不使用global关键字 def global_counter(): global gcount gcount +=1 #修改全局变量,需要使用global关键字 return gcount
2
3
非ローカル キーワードが使用で使用されています関数または他のスコープ内の外部 (非グローバル) 変数。
def make_counter(): count = 0 #定义一个局部变量,该局部变量作用范围在make_counter()方法内 def counter(): nonlocal count #在方法counter()中使用外层局部变量 count count += 1 return count return counter def make_counter_test(): mc = make_counter() print(mc()) print(mc()) print(mc()) make_counter_test()
出力
3以上がグローバル変数が作成されないPythonでグローバル変数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。