Python関数を別の関数の引数にすることはできますか?
いう:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
したがって、これは基本的に2つの質問です。
ところで、extraArgsはanotherfuncの引数のリスト/タプルです。
Python関数を別の関数の引数にすることはできますか?
はい。
def myfunc(anotherfunc, extraArgs):
anotherfunc(*extraArgs)
より具体的にするには...さまざまな引数で...
>>> def x(a,b):
... print "param 1 %s param 2 %s"%(a,b)
...
>>> def y(z,t):
... z(*t)
...
>>> y(x,("hello","manuel"))
param 1 hello param 2 manuel
>>>
*args
(およびオプションで)、**kwargs
を使用する別の方法を次に示します。
def a(x, y):
print x, y
def b(other, function, *args, **kwargs):
function(*args, **kwargs)
print other
b('world', a, 'hello', 'dude')
出力
hello dude
world
function
、*args
、**kwargs
はこの順序でなければならず、関数を呼び出す関数の最後の引数でなければならないことに注意してください。
Pythonの関数はファーストクラスのオブジェクトです。しかし、関数定義 少しオフ です。
def myfunc(anotherfunc, extraArgs, extraKwArgs):
return anotherfunc(*extraArgs, **extraKwArgs)
確かに、それがpythonが最初のパラメーターが関数である以下のメソッドを実装する理由です:
例えば:
def anotherfunc(inputarg1, inputarg2):
pass
def myfunc(func = anotherfunc):
print func
Myfuncを呼び出すと、次のようになります。
myfunc(anotherfunc(inputarg1, inputarg2))
これにより、anotherfuncの戻り値が出力されます。
お役に立てれば!
anotherfunc(*extraArgs)
関数内の関数:関数をパラメーターとして使用することもできます。
つまり、関数の出力はオブジェクトの参照でもあると言えます。以下のように、内部関数の出力が外部関数をどのように参照しているかを参照してください。
def out_func(a):
def in_func(b):
print(a + b + b + 3)
return in_func
obj = out_func(1)
print(obj(5))
結果は... 14
お役に立てれば。
def x(a):
print(a)
return a
def y(func_to_run, a):
return func_to_run(a)
y(x, 1)
より適切なサンプルになると思います。さて、私が疑問に思うのは、別の関数への引数サブミット内で使用する関数をコーディングする方法があるかどうかです。 C++にはあると思いますが、Pythonにはありません。
def x(a):
print(a)
return a
def y(a):
return a
y(x(1))