迭代* args?

时间:2012-03-05 15:19:31

标签: python arguments

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

def userInput(ItemA, ItemB, *args):
    THIS = ItemA
    THAT = ItemB
    MORE = *args

我要做的是将* args中的参数放入我可以迭代的列表中。我已经在StackOverflow以及Google上查看了其他问题,但我似乎无法找到我想要做的答案。在此先感谢您的帮助。

7 个答案:

答案 0 :(得分:12)

获取精确语法:

def userInput(ItemA, ItemB, *args):
    THIS = ItemA
    THAT = ItemB
    MORE = args

    print THIS,THAT,MORE


userInput('this','that','more1','more2','more3')

您删除*作业中args前面的MORE。然后MORE成为args

签名中可变长度内容userInput的元组

输出:

this that ('more1', 'more2', 'more3')

正如其他人所说,将args视为可迭代的更为常见:

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') 

输出:

this that more1 more2 more3

答案 1 :(得分:4)

>>> 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引用)。

答案 2 :(得分:3)

如果你这样做:

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 :(得分:0)

MORE = args

或者,直接:

for arg in args:
    print "An argument:", arg

答案 4 :(得分:0)

如果你的问题是“如何迭代args”,那么答案就是“与迭代任何内容的方式相同”:for arg in args: print arg

答案 5 :(得分:0)

只需迭代args

def userInput(ItemA, ItemB, *args):
    THIS = ItemA
    THAT = ItemB
    for arg in args:
        print arg

答案 6 :(得分:0)