1. 程式人生 > >python獲取函數所有入參的key-value

python獲取函數所有入參的key-value

變量 args 入參 返回 小夥伴 local python int 需求

需要拿到一個函數裏所有的傳入的參數,並且存在一個字典裏。
下面的方法確實拿到了字典,不過要求函數必須用非固定參數**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