带* args和** kwargs的默认参数

带* args和** kwargs的默认参数,第1张

带* args和** kwargs的默认参数

只需将默认参数放在

*args

def foo(a, b=3, *args, **kwargs):

现在,

b
如果将其作为关键字参数或第二个位置参数传递,则将进行显式设置。

例子:

foo(x) # a=x, b=3, args=(), kwargs={}foo(x, y) # a=x, b=y, args=(), kwargs={}foo(x, b=y) # a=x, b=y, args=(), kwargs={}foo(x, y, z, k) # a=x, b=y, args=(z, k), kwargs={}foo(x, c=y, d=k) # a=x, b=3, args=(), kwargs={'c': y, 'd': k}foo(x, c=y, b=z, d=k) # a=x, b=z, args=(), kwargs={'c': y, 'd': k}

请注意,尤其

foo(x, y, b=z)
不能使用,因为
b
在这种情况下是按位置分配的。


该代码也可以在Python 3中使用。在Python 3中将默认arg放在 后面

*args
,使其成为“仅关键字”参数, 只能
按名称指定,不能按位置指定。如果要在Python 2中使用仅关键字的参数,则可以使用@mgilson的解决方案。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5643556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存