この記事では主に Python の関数スコープを紹介します。これには特定の参照値があります。必要な友達はそれを参照してください。
Python では、関数はスコープです。この記事では、Python での関数スコープの紹介に焦点を当てています。興味のある方は、ぜひ一緒にご覧ください。
name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:',name) change_name() # 调用函数 print("在外面的name:",name)
上記の入れ子関数では、関数がスコープであることは十分に説明できます。 それでは、コードを少し変更して何が起こるか見てみましょう
age = 15 def func(): print('第一层age:',age) # 第一层age: 15 def func2(): age = 73 print("func2中的age:",age) # func2中的age: 73 def func3(): age = 84 print("func3中的age:",age) # func3中的age: 84 func3() # 调用func3函数 func2() # 调用func2函数 func()
さて、この時点で誰かが、多くのナンセンスが変わったと言いました。ローカル変数とグローバル変数があるので、質問したいのですが: 上記の入れ子関数では、func2 に age 変数がありません。では、グローバル変数 age = 15 はどうやって見つけますか?
この時点で、次のことを確認する必要があります。スコープの検索順:変数スコープ LEGB
L: ローカル ローカル変数と実パラメータを含む関数内の名前空間
E: 囲む外部の入れ子関数の名前空間例: func2 に age 変数がない場合、組み込みモジュールの funcG:globals グローバル変数
B:builtins 名前空間でこれを見つけます。
まず、名前空間とは何かを理解しましょう。
さまざまな変数のスコープは、変数が配置されている名前空間によって決まります
スコープはスコープです
グローバルスコープ:グローバルに有効、グローバルに有効
ローカルスコープ:一時的なインベントリ、ローカルに有効
例を見てみましょう
age = 15 def func(): print('第一层age:',age) # 第一层age: 15 def func2(): print("func2中的age:",age) # func2中的age: 15 # 看到没有,如果当前作用域里没有age变量,那么它就会往上找 def func3(): age = 84 print("func3中的age:",age) # func3中的age: 84 func3() # 调用func3函数 func2() # 调用func2函数 func()
関連する推奨事項:
以上がPython の関数スコープの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。