gpt4 book ai didi

python - 后面加*args可以使用默认参数吗?

转载 作者:行者123 更新时间:2023-12-01 01:39:43 25 4
gpt4 key购买 nike

例如,如果我有:

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

最佳答案

您可以将可变位置参数放在关键字参数之前:

更改:

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")

关于python - 后面加*args可以使用默认参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com