5
功能對象的屬性爲__defaults__
和__kwdefaults__
。我發現如果一個函數有一些默認參數,那麼它們被作爲元組放到__defaults__
,但是__kwdefaults__
是None
。何時使用屬性__kwdefaults__
?__kwdefaults__是一個函數對象屬性的用途是什麼?
功能對象的屬性爲__defaults__
和__kwdefaults__
。我發現如果一個函數有一些默認參數,那麼它們被作爲元組放到__defaults__
,但是__kwdefaults__
是None
。何時使用屬性__kwdefaults__
?__kwdefaults__是一個函數對象屬性的用途是什麼?
def foo(arg1, arg2, arg3, *args, kwarg1="FOO", kwarg2="BAR", kwarg3="BAZ"):
pass
print(foo.__kwdefaults__)
輸出(Python 3中):
{'kwarg1': 'FOO', 'kwarg2': 'BAR', 'kwarg3': 'BAZ'}
由於*args
將吞下所有非關鍵字參數,參數後,必須與關鍵字進行傳遞。見PEP 3102。
>>> def a(a, *, b=2): pass
...
>>> a.__kwdefaults__
{'b': 2}
>>> def a(*args, a=1): pass
...
>>> a.__kwdefaults__
{'a': 1}