名前空間とスコープ
まず、名前空間
1.1ビルトイン名前空間
排他的なPythonインタプリタ
例えば:
len([1, 2, 3])
int('10')
関数呼び出しは、定義する必要が定義されていない。説明を停止した後、内蔵これらの組み込みのpythonの名前、Pythonインタプリタのためのスペースを開くためのpythonを破壊する際にPythonインタプリタが自動的に起動します
1.2グローバルネームスペース
ビルトインローカルに加えて、他の人はグローバルであり、
例えば:
z = 10 #全局名称空间
def f1():
x = 10
def f2():
y = 10
print('from f2')
グローバルは、独自の定義を必要とするPythonのファイルが実行された後、ファイルの末尾が破壊された後、それは、グローバルネームスペースを有していても良いです
1.3ローカル名前空間
機能/関数名で定義された変数名はローカル名前空間に格納されています
例えば:
z = 10
def f1():
x = 10 #局部名称空间
def f2():
y = 10 #局部名称空间
print('from f2')
地元でも、独自の定義を必要とし、関数呼び出しの後に生成する必要があります、それはコールの後に破壊されます
キー:
名前空間の3種類の実行順序:内蔵 - >グローバル - >ローカル
名前空間の三種類の順序を探す:あなたの現在の場所で開始 - >ローカル - >グローバル - >内蔵
例えば:
x = 1 #全局
def f1():
x = 3 #局部
f1()
print(x)
第二に、スコープ(効果の範囲)
例えば:
x = 1
def f1():
x = 3
print(x)
# 这里面的x =1和x=3不是同一个东西
2.1グローバルスコープ
+内蔵グローバル変数の名前空間変数、スコープのグローバル大きな絵だけを使用することができます
x = 1 #x = 1这个变量只能在全局中使用,不能再局部使用,也不能和混着使用
def f1():
x = 3
print(x)
2.2ローカルスコープ
ローカル名前空間変数は、変数のローカルスコープはローカルでのみ使用することができます
例えば:
x = 1 # 全局变量
def f1():
return x
# print(x) # f1中的局部
def f2():
x = 2 # x=2只能在f2中使用
f1()
f2() # f1中的局部和f2中的局部互不干涉
定義フェーズにおけるスコープ機能の関係は死んで同定されています
第三に、知識の理解
3.1グローバル
例えば:
x = 1
def f1():
global x # 声明x为全局的x
x = 3
f1()
print(x)
3.2非ローカル
def f1():
x = 1
def f2():
nonlocal x # 针对嵌套函数局部之间的修改
x = 3
f2()
print(x)
f1()
推奨3.3
例えば:
lt = [1,2,3] # 作用域关系仅适用不可变数据类型,不适用于可变数据类型
def f1():
lt.append(4)
f1()
print(lt)