1. ホーム
  2. python

[解決済み] Python で引数リストを使って関数を呼び出す

2022-04-25 15:06:47

質問

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番目の呼び出しはうまくいきません。 私が修正したいのはラッパー関数であって、呼び出された関数ではありません。

どのように解決するのですか?

他の回答を少し展開します。

行で。

def wrapper(func, *args):

の隣にある*は args は、指定された残りのパラメータを受け取り args となります。

行で。

    func(*args)

の隣にある*は args ここで、quot;は、この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] .