国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python嵌套函數作用域怎么解釋

瀏覽:106日期:2022-09-08 11:50:04

問題描述

直接上代碼

def l(list): def d():return list return d #運行l = l([1,2,3,4])print l()

這個情況是正常的。

問題在于d函數為什么不能傳入list,然后我現在嘗試了一下這個代碼:

def l(list): def d(list):return list return d #運行l = l([1,2,3,4])#提示錯誤print l()#正常print l([1,3,5,7,9])

請問這個怎么解釋呢?我個人理解的是,類似于“繼承”的情況,當d函數沒有參數傳入的情況上,基于父函數的參數,當他需要傳參了,就覆蓋了???

問題解答

回答1:

看看LEGB原則,就會明白是怎么回事。https://zhuanlan.zhihu.com/p/...

運行

l = l([1,2,3,4])

提示錯誤

print l() 這個錯誤是你沒有傳參數。

回答2:

原有代碼中:

def l(list): def d(list):return list return d # <-- 這里是返回的一個要傳入一個參數的函數 #運行l = l([1,2,3,4])#提示錯誤print l() # <-- 這里沒有傳入參數報錯,這里的 l 是 返回的閉包 d#正常print l([1,3,5,7,9]) # <-- 這里的 l 已經不是你最初定義的 l 而是 最初 l 中返回的 d

下面的用于說明:你原來代碼中的 l 指向不同:

def l(list): def d(list):return list return d #運行print ’id(l) is {}’.format(id(l))l = l([1,2,3,4])#提示錯誤# print l()#正常print ’id(l) is {}’.format(id(l))print l([1,3,5,7,9])

代碼寫成這樣你可能就理解了:

def l(_list): def d(_l):return _list + _l return d a = l([1,2,3,4])print a([1])

最后說兩點:

不要使用 list 這樣的關鍵字作為變量名

不要覆蓋你的變量名(除非真的有必要)

回答3:

樓主需要理解的是: 作用域

case 1: 函數l返回函數d的地址,d只做為返回值,并沒有被調用執行.

In [3]: print(l([1,2,3,4]))<function l.<locals>.d at 0x7f49243ece18>

 參數list傳入l,作用域在函數l內,可以被d訪問(注意參數是傳給l的,不是d).  如果要訪問list.如下調用:  `

In [2]: print(l([1,2,3,4])()) [1, 2, 3, 4]

相當于:

In [5]: d = l([1,2,3,4]) # 返回d的地址In [6]: d()#調用d,d沒有參數,不需要傳參 Out[6]: [1, 2, 3, 4]

case 2: 同樣l返回d的地址,但此時返回的函數d需要傳參(注意l的參數list和d的參數list是不一樣的). 

In [8]: d = l([1,2,3,4])# 返回函數d的地址,參數list此時并沒有用到In [9]: d([5,6,7,8])# 需要參數的函數d Out[9]: [5, 6, 7, 8]

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中国美女牲交一级毛片 | 精品99久久 | 国产老鸭窝毛片一区二区 | 中文字幕精品在线观看 | 久久久久久综合成人精品 | 真实国产精品视频国产网 | 欧美成人免费在线观看 | 国产精品一区二区久久精品涩爱 | 日韩三级免费观看 | 美国一级做a一级视频 | 国产亚洲人成网站在线观看不卡 | 亚洲综合色在线观看 | 2017天天爽夜夜爽精品视频 | 成人免费真人毛片视频 | 日韩视频欧美视频 | 亚洲国产欧美日韩精品一区二区三区 | 青青热久久国产久精品 | 日本久久一区二区 | 久久一本一区二区三区 | 亚洲国产精品线观看不卡 | 一级特黄aaa大片在 一级特黄aaa大片在线观看 | 一级毛片免费不卡在线 | 久久国产精彩视频 | 91年精品国产福利线观看久久 | avove旗袍丝袜高跟啪啪 | 欧美成人做性视频在线播放 | 久久久久久久网站 | 久久91精品国产91久久跳舞 | 一级做a爰片久久毛片欧美 一级做a爰片久久毛片人呢 | 一色屋色费精品视频在线观看 | 91国内精品久久久久影院优播 | 亚洲午夜综合网 | 国产玖玖视频 | 国产欧美日韩不卡一区二区三区 | 制服诱惑中文字幕 | 万全影院亚洲影院理论片 | 美女张开腿让男人桶下面 | 欧美日韩一区二区不卡三区 | 国产精品拍拍拍福利在线观看 | 国产成人综合怡春院精品 | 久久机热综合久久国产 |