def apply_twice(func,arg):
return func(func(arg))
def add_five(x):
return x+5
print (apply_twice(add_five,10))
出力は20誰もこの機能プログラムの仕組みを説明できますか?私が手
どのようにそれは誰もが、これはそれのように実行するコードを拡大
def apply_twice(func,arg):
return func(func(arg))
def add_five(x):
return x+5
print (apply_twice(add_five,10))
出力は20誰もこの機能プログラムの仕組みを説明できますか?私が手
どのようにそれは誰もが、これはそれのように実行するコードを拡大
それを分解して働いているかを私に説明working.Canされるようにこの1つは実際に私を混乱さです
apply_twice(add_five,10))
add_five(add_five(10)) # add_five(10) = 15
print
コールで始まる、次の
apply_twice
が呼び出されると20
は、あなたが関数オブジェクトと値を渡している:あなたの結果を与える
add_five(15) # add_five(15) = 20
。 apply_twice
の定義のように、func
が渡された関数オブジェクト(この場合はadd_five
)で置き換えられています。次に、内部のfunc(arg)
コールから始めて、結果を評価し、add_five
にもう一度、return func(...)
コールで渡します。
機能apply_twice(func,arg)
は二つの引数、関数オブジェクトfunc
とarg
と呼ばれる機能func
に渡す引数を取ります。 Pythonで
、機能を容易に引数として他の関数に周りに渡すことができ、それらは異なる他の引数の型(すなわちfirst class citizens)よりも扱われていません。 apply_twice
インサイド
、func
はラインに2回呼び出され:
func(func(arg))
:あなたが名前でfunc
を交換した場合
res = func(arg)
func(res)
add_five
に渡された関数のうち、次のものが得られます。
res = add_five(arg) # equals: 15
add_five(res) # result: 20
あなたの期待した結果を返します。このことから覚えて
キーポイントはあなたには、いくつかの特別な構築物としてPython
の関数を考えるべきではないということです、機能がちょうどint
のようなオブジェクト、lists
秒であり、他のすべてがあります。