例如,如果我有:
def foo(arg1, def_par="yes", *args,**kwargs):
print(arg1,def_par)
for key, value in kwargs.items():
print("{},{}".format(key,value))
for arg in args:
print(arg)
foo("Hello",1,2,smell="funky")
然后解释器输出:
>>Hello 1
>>smell,funky
>>2
有没有一种创建输出的方法,除非使用关键字参数明确定义,否则默认参数用于创建输出,例如:
>>Hello Yes
>>smell,funky
>>1
>>2
答案 0 :(得分:2)
您可以在关键字参数之前放置可变位置参数:
更改:
def foo(arg1, def_par="yes", *args,**kwargs):
收件人:
def foo(arg1, *args, def_par="yes", **kwargs):
进行此更改后,您的代码将输出:
Hello yes
smell,funky
1
2
如果由于某种原因您不想或不想更改foo
的函数签名,则可以使用inspect.signature
获取参数的默认值:
import inspect
foo("Hello", inspect.signature(foo).parameters['def_par'].default, 1, 2, smell="funky")