2012-03-05 16 views
7

私は複数の引数を受け入れる必要がある場所で作業しているスクリプトを持っていて、それを繰り返し実行してアクションを実行します。私は、関数を定義し、* argsを使う方法を打ち出しました。これまでのところ、私は以下のようなものを持っている:* argsを繰り返しますか?

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

私がやろうとしている私は何を反復処理することができますリストに*引数から引数を取得することです。私はStackOverflowとGoogleの他の質問を見てきましたが、私がしたいことに対する答えを見つけることができないようです。助けを前にありがとう。

+1

+1 Iドンあなたがなぜ落選したのか分かりません。 – CoffeeRain

+3

'MORE = * args'を設定すると構文エラーが発生します。 '*'は反復可能なアンパック演算子です。 'MORE = args'(アスタリスクを削除する)を使うと、あなたが望むものを得ることができます。 –

答えて

10

カントーがあなたの正確構文を取得*の前にargsMOREへの割り当てになります。その後、それ以上はuserInput

出力の署名にargsの可変長コンテンツと組になる:他の人が述べたように

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 arg

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

あなたの質問は、答えは「あなたは何を反復処理するのと同じ方法」である「どのように私はargsを反復処理するか」、である場合。

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 

編集:(ジェレミー・Dとsubhacomによって参照として)もHow to use *args and **kwargs in Pythonを参照してください。

3

をあなたの問題を解決する必要があります

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

その他の情報:あなたが削除

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

    print THIS,THAT,MORE 


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

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

関連する問題