我使用的是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中创建一个接受不同数量参数和默认值参数的函数?如何实现我期望的结果如上所述?
答案 0 :(得分:1)
在 Python 3 中,您可以在函数定义中*args
之后移动该关键字参数,因此*args
仅捕获位置符号:
def foo(a, *args, b='default-value'):
...
first argument=arg1
default-value argument=default-value
rest of arguments:
arg2
arg3
arg4
答案 1 :(得分:1)
您可以通过将参数taht作为最后一个参数设置为params来存档您想要的内容
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
arg4