62

I've been looking at passing arrays, or lists, as Python tends to call them, into a function.

I read something about using *args, such as:

def someFunc(*args)
    for x in args
        print x

But not sure if this is right/wrong. Nothing seems to work as I want. I'm used to be able to pass arrays into PHP function with ease and this is confusing me. It also seems I can't do this:

def someFunc(*args, someString)

As it throws up an error.

I think I've just got myself completely confused and looking for someone to clear it up for me.

4

5 に答える 5

82

この構文を使用して関数を定義すると、次のようになります。

def someFunc(*args):
    for x in args
        print x

可変数の引数を期待していることを伝えています。リスト (他の言語の配列) を渡したい場合は、次のようにします。

def someFunc(myList = [], *args):
    for x in myList:
        print x

次に、これで呼び出すことができます:

items = [1,2,3,4,5]

someFunc(items)

可変引数の前に名前付き引数を定義し、キーワード引数の前に可変引数を定義する必要があります。これを持つこともできます:

def someFunc(arg1, arg2, arg3, *args, **kwargs):
    for x in args
        print x

これには少なくとも 3 つの引数が必要であり、可変数の他の引数とキーワード引数をサポートします。

于 2010-10-18T16:13:40.693 に答える
32

他の型と同じようにリストを渡すことができます:

l = [1,2,3]

def stuff(a):
   for x in a:
      print a


stuff(l)

これにより、リスト l が出力されます。リストはディープ コピーとしてではなく参照として渡されることに注意してください。

于 2010-10-18T16:12:43.693 に答える
8

リストを受け入れるためにアスタリスクを使用する必要はありません。

定義で引数に名前を付けて、次のようなリストを渡すだけです。

def takes_list(a_list):
    for item in a_list:
         print item
于 2010-10-18T16:13:20.790 に答える
8

Python リスト (サイズはその場で変更できるため、単なる配列ではありません) は通常の Python オブジェクトであり、任意の変数として関数に渡すことができます。* 構文はリストのアンパックに使用されますが、これはおそらく今はやりたくないことでしょう。

于 2010-10-18T16:14:18.173 に答える