具有不同数量的参数(* args)和具有默认值的参数的函数?

时间:2017-08-31 14:10:40

标签: python python-3.x parameters variadic-functions default-value

我使用的是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中创建一个接受不同数量参数和默认值参数的函数?如何实现我期望的结果如上所述?

2 个答案:

答案 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