【Class 17】python進級-関数式プログラミング-閉パッケージ
4992 ワード
かんすうしきプログラミング
閉パケット=関数+環境変数閉パケットの環境変数には、nonlocalで宣言されたローカル変数を使用して、グローバル変数と同様に、閉パケットで前回呼び出した状態を保存するフィールドを保存する機能があります.
例1:
例2:
例3:
global文:関数外に定義された変数に値を割り当てる場合は、Pythonという変数名はローカルではなくグローバルであることを伝えなければなりません.global文を使用してこの機能を完了します.global文がなければ、関数外に定義された変数に値を割り当てることはできません.
例:
nonlocal文は、ローカル変数ではない変数を強制的に宣言します.
閉パケット=関数+環境変数閉パケットの環境変数には、nonlocalで宣言されたローカル変数を使用して、グローバル変数と同様に、閉パケットで前回呼び出した状態を保存するフィールドを保存する機能があります.
例1:
def curve_pre():
a = 25
def curve(x):
return a * x * x
return curve
f = curve_pre()
print( f(2) )
:
100
例2:
a = 25
def curve_pre():
def curve(x):
return a * x * x
return curve
# a 10
a = 10
f = curve_pre()
print( f(2) )
:
40
例3:
def curve_pre():
a = 25
def curve(x):
return a * x * x
return curve
# a 10
f = curve_pre()
print(f.__closure__)
print(f.__closure__[0].cell_contents)
print( f(2) )
:
(<cell at 0x0000025519CD0768: int object at 0x00007FF9BB39E650>,)
25
100
global文:関数外に定義された変数に値を割り当てる場合は、Pythonという変数名はローカルではなくグローバルであることを伝えなければなりません.global文を使用してこの機能を完了します.global文がなければ、関数外に定義された変数に値を割り当てることはできません.
例:
def curve_pre():
global a
a = 20
def curve(x):
return a * x * x
return curve
a = 10;
nonlocal文は、ローカル変数ではない変数を強制的に宣言します.