Iterate over *args?

后端 未结 7 1427
借酒劲吻你
借酒劲吻你 2020-12-15 07:52

I have a script I\'m working on where I need to accept multiple arguments and then iterate over them to perform actions. I started down the path of defining a function and u

相关标签:
7条回答
  • 2020-12-15 07:57
    >>> 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
    

    edit: See also How to use *args and **kwargs in Python (As referenced by Jeremy D and subhacom).

    0 讨论(0)
  • 2020-12-15 07:57
    MORE = args
    

    Or, directly:

    for arg in args:
        print "An argument:", arg
    
    0 讨论(0)
  • 2020-12-15 07:57

    If your question is "how do I iterate over args", then the answer is "the same way you iterate over anything": for arg in args: print arg.

    0 讨论(0)
  • 2020-12-15 08:01

    Tho get your precise syntax:

    def userInput(ItemA, ItemB, *args):
        THIS = ItemA
        THAT = ItemB
        MORE = args
    
        print THIS,THAT,MORE
    
    
    userInput('this','that','more1','more2','more3')
    

    You remove the * in front of args in the assignment to MORE. Then MORE becomes a tuple with the variable length contents of args in the signature of userInput

    Output:

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

    As others have stated, it is more usual to treat args as an iterable:

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

    Output:

    this that more1 more2 more3
    
    0 讨论(0)
  • 2020-12-15 08:01

    First entry in: http://www.google.com/search?q=python+*args viz. http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/ should solve your problem,

    0 讨论(0)
  • 2020-12-15 08:04

    If you do that :

    def test_with_args(farg, *args):
        print "formal arg:", farg
        for arg in args:
            print "other args:", arg
    

    Other information: http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

    0 讨论(0)
提交回复
热议问题