def apply_twice(func,arg):
return func(func(arg))
def add_five(x):
return x+5
print (apply_twice(add_five,10))
我得到的输出是20。
这实际上使我感到困惑,例如它是如何工作的。有人可以通过分解来解释我这是如何工作的
该函数apply_twice(func,arg)
采用两个参数,一个功能对象func
和一个参数传递给函数func
调用arg
。
在Python中,可以轻松地将函数作为参数传递给其他函数,它们与任何其他参数类型(即,头等公民)的区别都没有区别。
Inside apply_twice
,func
在行中被两次调用:
func(func(arg))
或者,可以将其更友好地视为:
res = func(arg)
func(res)
如果func
用传入的函数的名称替换,add_five
则会得到以下信息:
res = add_five(arg) # equals: 15
add_five(res) # result: 20
当然,它会返回您的预期结果。
从这里要记住的关键点是,您不应将函数Python
视为某种特殊的构造,函数是像int
s,lists
s一样的对象,而其他所有东西都是。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句