Pythonで引数リストを使用して関数を呼び出す [重複] 質問する

Pythonで引数リストを使用して関数を呼び出す [重複] 質問する

Python で別の関数内の関数を呼び出そうとしていますが、正しい構文が見つかりません。私がやりたいことは次のようなものです:

def wrapper(func, args):
    func(args)

def func1(x):
    print(x)

def func2(x, y, z):
    return x+y+z

wrapper(func1, [x])
wrapper(func2, [x, y, z])

この場合、最初の呼び出しは機能しますが、2 番目は機能しません。変更したいのは、呼び出された関数ではなく、ラッパー関数です。

ベストアンサー1

他の回答を少し詳しく説明します。

次の行に:

def wrapper(func, *args):

の横にある * は、args「指定された残りのパラメータを取得して、 というリストに格納するargs」ことを意味します。

次の行に:

    func(*args)

ここの横の * は、args「args というこのリストを取得し、それを残りのパラメータに「展開」する」ことを意味します。

したがって、次の操作を実行できます。

def wrapper1(func, *args): # with star
    func(*args)

def wrapper2(func, args): # without star
    func(*args)

def func2(x, y, z):
    print x+y+z

wrapper1(func2, 1, 2, 3)
wrapper2(func2, [1, 2, 3])

ではwrapper2、リスト は明示的に渡されますが、両方のラッパーにはargsリスト が含まれます[1,2,3]

おすすめ記事