您好,登錄后才能下訂單哦!
需要拿到一個(gè)函數(shù)里所有的傳入的參數(shù),并且存在一個(gè)字典里。
下面的方法確實(shí)拿到了字典,不過(guò)要求函數(shù)必須用非固定參數(shù)**kwargs定義,而且對(duì)調(diào)用函數(shù)很不友好
def func1(**kwargs):
d = 'local_d'
return kwargs
res = func1(a=1, b=2, c=3)
print(res)
# 結(jié)果:
# {'a': 1, 'b': 2, 'c': 3}
locals()函數(shù)會(huì)以字典類(lèi)型返回當(dāng)前位置的全部局部變量,看著很符合現(xiàn)在的需求:
def func2(a, b, c):
d = 'local_d'
return locals()
res = func2(1, 2, 3)
print(res)
# 結(jié)果:
# {'d': 'local_d', 'c': 3, 'b': 2, 'a': 1}
想著很好,但是實(shí)際用的時(shí)候,最后會(huì)把函數(shù)內(nèi)部其他變量也返回。不完美,只想要入?yún)⒌淖值洹?br/>最后機(jī)制的小伙伴想到了,其實(shí)還是上面的方法:
def func3(a, b, c):
kwargs = locals()
d = 'local_d'
return kwargs
res = func3(1, 2, 3)
print(res)
# 結(jié)果
# {'c': 3, 'b': 2, 'a': 1}
其實(shí)就是在函數(shù)的開(kāi)始,其他變量還沒(méi)有出現(xiàn)的時(shí)候,就想把當(dāng)前的locals()取出來(lái),等到最后再返回。完美!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。