2011-08-02 9 views
16

私の問題はリストに値があることです。そして、私はこれらの値を分けて、それらを別々のパラメータとして送りたいと思います。リストを分割して別々のパラメータとして渡す方法は?

私のコードは次のとおりです。

def egg(): 
    return "egg" 

def egg2(arg1, arg2): 
    print arg1 
    print arg2 

argList = ["egg1", "egg2"] 
arg = ', '.join(argList) 

egg2(arg.split()) 

コード(egg2(arg.split()))のこの行は動作しませんが、私は後でので、リストから値を分離しますいくつかの組み込み関数を呼び出すことが可能であるかどうかを知りたいと思った私たちそれらを2つの異なるパラメータとして送信することができます。 egg2(argList[0], argList[1])と似ていますが、動的に実行する必要があるため、明示的にリスト引数を入力する必要はありません。

+2

可能重複します(http:// stackoverflowの.com/questions/3558593/pass-each-of-a-function-of-a-function-of-multiple-arguments-in-python) –

答えて

37
>>> argList = ["egg1", "egg2"] 
>>> egg2(*argList) 
egg1 
egg2 

* args(arguments)と** kwargs(キーワード引数)は、関数を呼び出すときに使用できます。 正しく使用する方法についてはthis blogをご覧ください。

0

arg.split()は、デフォルトの区切りがあなたと一致しないため、リストにあなたが望むように分割されていません。

In [3]: arg 
Out[3]: 'egg1, egg2' 

In [4]: arg.split() 
Out[4]: ['egg1,', 'egg2'] 

In [5]: arg.split(', ') 
Out[5]: ['egg1', 'egg2'] 

the docsから(強調追加):

sepが指定されていないか、Noneの連続する空白の実行は、単一のセパレータとみなされ、文字列の先頭または末尾に空白がある場合、先頭または末尾に空の文字列は含まれません。

+0

これは根本的な問題に対処することはすぐにはわかりませんこれは 'eggs2'は二つの引数を必要としますが、' ['egg1'、 'egg2']のバリエーションは '*'演算子の前になければ単一の引数です。 – senderle

1

は多分、より良い方法がありますが、あなたは行うことができます[?Pythonで複数の引数を取る関数にリストの各要素を渡す]の

argList = ["egg1", "egg2"] 
(a, b) = tuple(argList) 
egg2(a, b)