午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

python嵌套函數(shù)作用域怎么解釋

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

問題描述

直接上代碼

def l(list): def d():return list return d #運(yùn)行l(wèi) = l([1,2,3,4])print l()

這個(gè)情況是正常的。

問題在于d函數(shù)為什么不能傳入list,然后我現(xiàn)在嘗試了一下這個(gè)代碼:

def l(list): def d(list):return list return d #運(yùn)行l(wèi) = l([1,2,3,4])#提示錯(cuò)誤print l()#正常print l([1,3,5,7,9])

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

問題解答

回答1:

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

運(yùn)行

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

提示錯(cuò)誤

print l() 這個(gè)錯(cuò)誤是你沒有傳參數(shù)。

回答2:

原有代碼中:

def l(list): def d(list):return list return d # <-- 這里是返回的一個(gè)要傳入一個(gè)參數(shù)的函數(shù) #運(yùn)行l(wèi) = l([1,2,3,4])#提示錯(cuò)誤print l() # <-- 這里沒有傳入?yún)?shù)報(bào)錯(cuò),這里的 l 是 返回的閉包 d#正常print l([1,3,5,7,9]) # <-- 這里的 l 已經(jīng)不是你最初定義的 l 而是 最初 l 中返回的 d

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

def l(list): def d(list):return list return d #運(yùn)行print ’id(l) is {}’.format(id(l))l = l([1,2,3,4])#提示錯(cuò)誤# 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])

最后說兩點(diǎn):

不要使用 list 這樣的關(guān)鍵字作為變量名

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

回答3:

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

case 1: 函數(shù)l返回函數(shù)d的地址,d只做為返回值,并沒有被調(diào)用執(zhí)行.

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

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

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

相當(dāng)于:

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

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 中文字幕在线一区 | 国产主播av| 麻豆视频一区二区 | 成人av播放 | 欧美黄色大片免费观看 | 国产精品一二三 | 91亚洲国产精品 | 午夜影院免费观看 | 国产一二三在线观看 | 一级片免费在线 | 国产福利免费在线观看 | 亚洲自拍偷拍在线 | 香蕉视频在线免费播放 | 欧美日韩中 | 成人性生交大片免费 | 国产自产在线 | 激情五月激情综合 | 性高潮久久久久久久 | 亚洲高清不卡 | 中文字幕天堂在线 | 草草影院在线 | 99精品国产一区二区 | 亚洲啊v | 男人天堂a | 亚洲50p| 亚洲精品1区2区 | 天天操夜夜操视频 | jizzjizz在线 | 精品成人一区 | 高清欧美性猛交xxxx黑人猛交 | 欧美日韩亚洲国产综合 | 天堂√8在线中文 | 国产精品第十页 | 老鸭窝久久 | 九九综合| 日本欧美国产在线 | 日本中文字幕在线播放 | 国产精品视频在线观看 | xxxx日韩 | 久久裸体视频 | 色姑娘综合 |