首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用可变数量的参数(*args)和使用默认值的参数的函数?

使用可变数量的参数(*args)和使用默认值的参数的函数?
EN

Stack Overflow用户
提问于 2017-08-31 22:10:40
回答 2查看 34关注 0票数 1

我使用的是Python 3.6.0

考虑以下代码:

代码语言:javascript
复制
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)

下面的函数调用:

代码语言:javascript
复制
foo('arg1','arg2','arg3','arg4')

结果如下:

代码语言:javascript
复制
first argument=arg1
default-value argument=arg2
rest of arguments: 
arg3
arg4

但我期望:

代码语言:javascript
复制
first argument=arg1
default-value argument=default-value
rest of arguments:
arg2
arg3
arg4

在Python中,是否可以创建一个同时接受不同数量的参数和具有默认值的参数的函数?我如何才能达到上面所述的预期结果?

EN

回答 2

Stack Overflow用户

发布于 2017-08-31 22:13:41

Python3中,您可以将关键字参数移动到函数定义中*args之后,因此*args只捕获位置参数

代码语言:javascript
复制
def foo(a, *args,  b='default-value'):
    ...

代码语言:javascript
复制
first argument=arg1
default-value argument=default-value
rest of arguments: 
arg2
arg3
arg4
票数 1
EN

Stack Overflow用户

发布于 2017-08-31 22:14:06

您可以通过将具有默认值的参数作为参数的最后一项来归档所需的内容

代码语言:javascript
复制
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')

结果:

代码语言:javascript
复制
first argument=arg1
default-value argument=default-value
rest of arguments: 
arg2
arg3
arg4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45983574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档