函数对象具有属性__defaults__
和__kwdefaults__
.我看到,如果一个函数有一些默认参数,那么它们被作为元组放到__defaults__
,但__kwdefaults__
是None
.属性__kwdefaults__
何时使用?
函数对象具有属性__defaults__
和__kwdefaults__
.我看到,如果一个函数有一些默认参数,那么它们被作为元组放到__defaults__
,但__kwdefaults__
是None
.属性__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.