首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代*args?

迭代*args?
EN

Stack Overflow用户
提问于 2012-03-05 23:19:31
回答 6查看 41.1K关注 0票数 18

我有一个我正在处理的脚本,我需要接受多个参数,然后迭代它们以执行操作。我开始了定义函数和使用*args的过程。到目前为止,我得到了如下内容:

代码语言:javascript
复制
def userInput(ItemA, ItemB, *args):
    THIS = ItemA
    THAT = ItemB
    MORE = *args

我要做的是将*args中的参数放入一个可以迭代的列表中。我已经在StackOverflow和谷歌上查看了其他问题,但我似乎找不到我想做的事情的答案。提前感谢你的帮助。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-06 00:41:39

要获得精确语法,请执行以下操作:

代码语言:javascript
复制
def userInput(ItemA, ItemB, *args):
    THIS = ItemA
    THAT = ItemB
    MORE = args
    
    print THIS,THAT,MORE
    
    
userInput('this','that','more1','more2','more3')

在分配给MORE时,删除args前面的*。然后,MORE成为具有userInput签名中args的可变长度内容的元组

输出:

代码语言:javascript
复制
this that ('more1', 'more2', 'more3')

正如其他人所说的那样,更常见的做法是将args视为可迭代变量:

代码语言:javascript
复制
def userInput(ItemA, ItemB, *args):    
    lst=[]
    lst.append(ItemA)
    lst.append(ItemB)
    for arg in args:
        lst.append(arg)

    print ' '.join(lst)
    
userInput('this','that','more1','more2','more3') 

输出:

代码语言:javascript
复制
this that more1 more2 more3
票数 23
EN

Stack Overflow用户

发布于 2012-03-05 23:23:38

代码语言:javascript
复制
>>> def foo(x, *args):
...   print "x:", x
...   for arg in args: # iterating!  notice args is not proceeded by an asterisk.
...     print arg
...
>>> foo(1, 2, 3, 4, 5)
x: 1
2
3
4
5

编辑:参见How to use *args and **kwargs in Python (由Jeremy D和subhacom引用)。

票数 5
EN

Stack Overflow用户

发布于 2012-03-05 23:24:02

如果你这样做了:

代码语言:javascript
复制
def test_with_args(farg, *args):
    print "formal arg:", farg
    for arg in args:
        print "other args:", arg

其他信息:http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9569092

复制
相关文章

相似问题

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