この記事では、例を示して Python スコープの使用法を分析します。参考のために皆さんと共有してください。詳細は次のとおりです:
すべてのプログラミング言語には変数スコープの概念があり、Python も例外ではありません。以下は Python スコープのコードのデモです:
def scope_test(): def do_local(): spam = "local spam" def do_nonlocal(): nonlocal spam spam = "nonlocal spam" def do_global(): global spam spam = "global spam" spam = "test spam" do_local() print("After local assignment:", spam) do_nonlocal() print("After nonlocal assignment:", spam) do_global() print("After global assignment:", spam) scope_test() print("In global scope:", spam)
。プログラムの出力 結果:
After local assignment: test spam After nonlocal assignment: nonlocal spam After global assignment: nonlocal spam In global scope: global spam
注: ローカル代入ステートメントは、scope_test のスパム バインディングを変更できません。非ローカル代入ステートメントは、scope_test のスパム バインディングを変更し、グローバル代入ステートメントは、モジュール レベルからスパム バインディングを変更します。
その中で、nonlocal は Python 3 の新しいキーワードです。
また、スパムがグローバル代入ステートメントの前に事前バインドされていないこともわかります。
概要:
プログラム内でグローバル変数にアクセスする状況に遭遇し、グローバル変数の値を変更したい場合は、以下を使用できます: global キーワード、この変数を関数内のグローバル変数として宣言します
nonlocal キーワードが関数で使用されています。または、他のスコープで外部 (非グローバル) 変数を使用します。
グローバル キーワードは理解しやすく、他の言語にも一般に同じことが当てはまります。別の非ローカルな例を次に示します:
def make_counter(): count = 0 def counter(): nonlocal count count += 1 return count return counter def make_counter_test(): mc = make_counter() print(mc()) print(mc()) print(mc())
実行結果:
1 2 3
Python スコープの使用例分析に関する詳細な記事については、PHP 中国語 Web サイトに注目してください。