Aut*_*Sha -1 python python-2.7 python-3.x
def apply_twice(func,arg):
return func(func(arg))
def add_five(x):
return x+5
print (apply_twice(add_five,10))
Run Code Online (Sandbox Code Playgroud)
我得到的输出是20.
这个实际上让我很困惑,比如它是如何工作的.任何人都可以通过分解来解释我的工作方式
该函数apply_twice(func,arg)接受两个参数,一个函数对象func和一个传递给被func调用函数的参数arg.
在Python中,函数可以很容易地作为参数传递给其他函数,它们的处理方式不同于任何其他参数类型(即一等公民).
在里面apply_twice,func在行中调用两次:
func(func(arg))
Run Code Online (Sandbox Code Playgroud)
或者,可以以更友好的方式查看:
res = func(arg)
func(res)
Run Code Online (Sandbox Code Playgroud)
如果替换func为传入的函数的名称,则add_five得到以下内容:
res = add_five(arg) # equals: 15
add_five(res) # result: 20
Run Code Online (Sandbox Code Playgroud)
当然,这会返回您的预期结果.
要记住的关键点是你不应该把函数Python看作某些特殊的构造,函数就像ints,listss和其他所有东西一样.
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |