函数对象具有属性__defaults__
和__kwdefaults__
. 我看到如果一个函数有一些默认参数,那么它们将作为一个元组放入__defaults__
but __kwdefaults__
is None
。什么时候使用属性__kwdefaults__
?
问问题
3197 次
2 回答
14
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。
于 2013-07-08T18:59:44.030 回答
9
它用于仅关键字参数:
>>> def a(a, *, b=2): pass
...
>>> a.__kwdefaults__
{'b': 2}
>>> def a(*args, a=1): pass
...
>>> a.__kwdefaults__
{'a': 1}
于 2013-07-08T19:00:08.203 回答