Python の変数とスコープ

高洛峰
高洛峰オリジナル
2017-02-28 17:00:151283ブラウズ

スコープの紹介

Python のスコープは 4 つの状況に分かれています: L: ローカル、ローカル スコープ、つまり関数内で定義された変数。

E: 囲み、ネストされた親関数のローカル スコープ、つまり Containsこの関数の上位関数のローカル スコープですが、グローバルではありません。

G: モジュール レベルで定義された変数であるグローバル変数。 B: int、bytearray などのシステム固定モジュールの組み込み変数。 。 変数検索の優先順位は、ローカルスコープ > 外部スコープ > 現在のモジュール内のグローバル > Python 組み込みスコープ (LEGB) です。


x = int(2.9) # int built-in
g_count = 0 # global
def outer():
o_count = 1 # enclosing
def inner():
i_count = 2 # local


もちろん、ローカルと囲みは相対的であり、囲み変数も上位層に対してローカルです。


#定义变量a
>>> a = 0
>>> print a
0
#定义函数p()
>>> def p():
... print a
... 
>>> p()
0
#定义函数p2()
>>> def p2():
... print a
... a = 3
... print a
... 
>>> p2() # 运行出错,外部变量a先被引用,不能重新赋值
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "<interactive input>", line 2, in p2
UnboundLocalError: local variable 'a' referenced before assignment
#定义函数p3()
>>> def p3():
... a = 3 # 不引用直接赋值
... print a
... 
>>> p3()
3
>>> print a
0 # 外部变量a并未改变


上記は編集者が紹介したPythonの変数とスコープの詳細な説明です。ご質問があれば、メッセージを残してください。編集者がすぐに返信します。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。

Python の変数とスコープに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。