我夢想一個Python方法有明確的關鍵字參數的個數:獲取的關鍵字參數實際傳遞給一個Python方法
def func(a=None, b=None, c=None):
for arg, val in magic_arg_dict.items(): # Where do I get the magic?
print '%s: %s' % (arg, val)
我想的只有調用者實際傳入參數的字典方法,就像**kwargs
,但我不希望調用者能夠通過任何舊的隨機參數,不像**kwargs
。
>>> func(b=2)
b: 2
>>> func(a=3, c=5)
a: 3
c: 5
所以:有這樣的咒語?就我而言,我碰巧能夠比較每個論點與默認值來找出不同的論點,但是當你有九個論點時,這是一種不雅而乏味的事情。對於加分,提供了一個咒語,可以告訴我,即使調用者傳遞關鍵字參數把它的缺省值:
>>> func(a=None)
a: None
調皮!
編輯:(詞法)函數簽名必須保持不變。它是公共API的一部分,顯式關鍵字參數的主要價值在於它們的文檔價值。只是爲了讓事情變得有趣。 :)
這個問題有一個非常相似的標題,但我不完全確定它是否是重複的:http://stackoverflow.com/questions/196960/can-you-list-the-keyword-arguments-a-python功能 - 收到 –
@AndersonGreen。你提到的問題與此無關。它詢問如何在使用**符號傳遞給不接受所有關鍵字的方法時過濾字典。 –
這是一個很好的問題。 –