python獲取函數所有入參的key-value
阿新 • • 發佈:2018-08-17
變量 args 入參 返回 小夥伴 local python int 需求 需要拿到一個函數裏所有的傳入的參數,並且存在一個字典裏。
下面的方法確實拿到了字典,不過要求函數必須用非固定參數**kwargs定義,而且對調用函數很不友好
下面的方法確實拿到了字典,不過要求函數必須用非固定參數**kwargs定義,而且對調用函數很不友好
def func1(**kwargs):
d = ‘local_d‘
return kwargs
res = func1(a=1, b=2, c=3)
print(res)
# 結果:
# {‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
locals()函數會以字典類型返回當前位置的全部局部變量,看著很符合現在的需求:
def func2(a, b, c): d = ‘local_d‘ return locals() res = func2(1, 2, 3) print(res) # 結果: # {‘d‘: ‘local_d‘, ‘c‘: 3, ‘b‘: 2, ‘a‘: 1}
想著很好,但是實際用的時候,最後會把函數內部其他變量也返回。不完美,只想要入參的字典。
最後機制的小夥伴想到了,其實還是上面的方法:
def func3(a, b, c):
kwargs = locals()
d = ‘local_d‘
return kwargs
res = func3(1, 2, 3)
print(res)
# 結果
# {‘c‘: 3, ‘b‘: 2, ‘a‘: 1}
其實就是在函數的開始,其他變量還沒有出現的時候,就想把當前的locals()取出來,等到最後再返回。完美!
python獲取函數所有入參的key-value