只需将默认参数放在
*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的解决方案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)