Python閉包関数


目次
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