我使用的是Python 3.6.0
考虑以下代码:
def foo(a, b='default-value', *args):
print('first argument=' + a)
print('default-value argument=' + b)
print('rest of arguments: ')
for arg in args:
print(arg)下面的函数调用:
foo('arg1','arg2','arg3','arg4')结果如下:
first argument=arg1
default-value argument=arg2
rest of arguments:
arg3
arg4但我期望:
first argument=arg1
default-value argument=default-value
rest of arguments:
arg2
arg3
arg4在Python中,是否可以创建一个同时接受不同数量的参数和具有默认值的参数的函数?我如何才能达到上面所述的预期结果?
发布于 2017-08-31 22:13:41
在Python3中,您可以将关键字参数移动到函数定义中*args之后,因此*args只捕获位置参数
def foo(a, *args, b='default-value'):
...first argument=arg1
default-value argument=default-value
rest of arguments:
arg2
arg3
arg4发布于 2017-08-31 22:14:06
您可以通过将具有默认值的参数作为参数的最后一项来归档所需的内容
def foo(a, *args, b='default-value'):
print('first argument=' + a)
print('default-value argument=' + b)
print('rest of arguments: ')
for arg in args:
print(arg)
foo('arg1','arg2','arg3','arg4')结果:
first argument=arg1
default-value argument=default-value
rest of arguments:
arg2
arg3
arg4https://stackoverflow.com/questions/45983574
复制相似问题