2012-03-05 2 views
7

У меня есть сценарий Я работаю над тем, где мне нужно принимать несколько аргументов, а затем перебирать их для выполнения действий. Я начал путь определения функции и использовал * args. До сих пор у меня есть кое-что, как показано ниже:Iterate over * args?

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

То, что я пытаюсь сделать, это получить аргументы из * аргументах в список, который я могу итерацию над. Я просмотрел другие вопросы о StackOverflow, а также в Google, но я не могу найти ответ на то, что я хочу делать. Заранее спасибо за помощь.

+1

+1 Я надеваю Я не знаю, почему тебя забросили. – CoffeeRain

+3

Установка 'MORE = * args' даст вам синтаксическую ошибку. '*' является итерируемым оператором распаковки. Использование 'MORE = args' (удаление звездочки) должно получить то, что вы хотите. –

ответ

10

Тхо получить точный синтаксис:

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 
0
MORE = args 

Или непосредственно:

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

Если ваш вопрос «как я могу перебрать args», то ответ «так же, как вы перебирать что-нибудь»: for arg in args: print arg.

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 (Как указано Джереми D и subhacom).

0

Просто перебирать args:

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