質問

Pythonがそれらを関数に呼ぶ傾向があるため、配列またはリストを渡すことを検討しています。

次のような *argsを使用することについて何かを読みました。

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

しかし、これが正しい/間違っているかどうかはわかりません。私が望むように機能するものは何もないようです。配列を簡単にPHP機能に渡すことができ、これは私を混乱させています。また、私はこれを行うことができないようです:

def someFunc(*args, someString)

エラーが発生すると。

私はちょうど完全に混乱していて、私のためにそれをクリアする誰かを探しているだけだと思います。

役に立ちましたか?

解決

この構文を使用して関数を定義するとき:

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つの引数が必要であり、さまざまな数の他の引数とキーワード引数をサポートします。

他のヒント

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

l = [1,2,3]

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


stuff(l)

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

Pythonリスト(そのサイズをその場で変更できるためだけの配列ではありません)は通常のPythonオブジェクトであり、変数として機能に渡すことができます。 *構文は、リストの開梱に使用されますが、これはおそらく今やりたいことではありません。

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

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

def takes_list(a_list):
    for item in a_list:
         print item
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top