閉包/工廠函數(shù)

閉包:python函數(shù)的內(nèi)部的變量離開這個函數(shù)就失去了作用域而不復(fù)存在
但是嵌套函數(shù)可以!

def fn1():
    x = 1
    def fn2():
        def fn3():
            print(x)
        return fn3
    return fn2
a = fn1()()()

解析: x是屬于fn1函數(shù)的,但是在 fn1()調(diào)用結(jié)束后 我們又加了兩個括號調(diào)用到了fn3,你看他還是能輸出x的值
但嵌套函數(shù)只是引用它!不能修改它,要在嵌套函數(shù)里修改x的值需要申明nonlocal x

def fn1():
    x = 1

    def fn2():
        def fn3():
            noncal x
            x+=1
            print(x)

        return fn3

    return fn2


a = fn1()()()

工廠函數(shù):
函數(shù)return的時候返回一個函數(shù)名

參考:https://www.zhihu.com/question/20670869 石溪的答案

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容