Python閉包関数
目次
1.閉パッケージ関数を作成します.
(1)閉包関数には埋め込み関数が必要
(2)埋め込み関数外層関数の変数を参照する必要がある
(3)閉包関数は埋め込み関数のアドレス(関数名)を返す.
2.閉包関数の判断方法:_closure__組み込み属性
(1)閉包関数にはパラメータがありません:
(2)閉包関数にはパラメータがあります.
1.閉パッケージ関数を作成します.
(1)閉包関数には埋め込み関数が必要
(2)埋め込み関数外層関数の変数を参照する必要がある
(3)閉包関数は埋め込み関数のアドレス(関数名)を返す.
2.閉包関数の判断方法:_closure__組み込み属性
位置
閉パッケージ関数に書いて、埋め込み関数のこの属性eg:inner._を出力するように要求します.clouse__
結果
出力結果には、この関数が閉パッケージ関数であることを示します.
(1)閉包関数にはパラメータがありません:
(2)閉包関数にはパラメータがあります.
1.閉パッケージ関数を作成します.
(1)閉包関数には埋め込み関数が必要
(2)埋め込み関数外層関数の変数を参照する必要がある
(3)閉包関数は埋め込み関数のアドレス(関数名)を返す.
2.閉包関数の判断方法:_closure__組み込み属性
(1)閉包関数にはパラメータがありません:
(2)閉包関数にはパラメータがあります.
1.閉パッケージ関数を作成します.
(1)閉包関数には埋め込み関数が必要
(2)埋め込み関数外層関数の変数を参照する必要がある
(3)閉包関数は埋め込み関数のアドレス(関数名)を返す.
def otter():
name = 'zs'
def inner(): #
print(name) #
return inner #
f = otter() # f inner
f() # inner()
2.閉包関数の判断方法:_closure__組み込み属性
位置
閉パッケージ関数に書いて、埋め込み関数のこの属性eg:inner._を出力するように要求します.clouse__
結果
出力結果には、この関数が閉パッケージ関数であることを示します.
(1)閉包関数にはパラメータがありません:
def otter():
name = 'zs'
def inner(): #
print(name) #
print(inner.__closure__) # (,)
# :___closure__ , cell,
return inner #
# return inner() #
f = otter() # f inner
print(f) # .inner at 0x000000000282F840>
f() # zs inner()
# () ()
|
(2)閉包関数にはパラメータがあります.
def otter(age):
name = 'zs'
def inner():
print(age)
print(inner.__closure__) # (,)
return inner
f = otter(10)
f() # 10 |