我正在解决python中的一些问题.在其中一个问题中,它要求我编写一个函数,以便在
examplefunction([1, 2, 3, 4])(10)返回时可以说10.
麻烦的是,我从未见过使用double ()()来表示在python中调用函数的符号.
我已经尝试查看堆栈溢出的多个帖子,例如 Python:将函数应用于嵌套字典中的值
但毫无疑问,这样的问题.
object()()只是_result = object()和_result()链接.只要第一个调用返回可调用对象,第二个调用表达式就可以继续.
让你的examplefunction()电话回复另一个功能.函数也是对象,因此您只需返回现有函数:
def examplefunction():
return secondfunction
def secondfunction():
return 10
Run Code Online (Sandbox Code Playgroud)
在哪一点examplefunction()()产生10.
您还可以examplefunction()通过将该函数对象定义为其主体的一部分,使您的调用每次都生成一个新的函数对象:
def examplefunction():
def nestedfunction():
return 10
return nestedfunction
Run Code Online (Sandbox Code Playgroud)
这给出了相同的结果,但是nestedfunction()具有(读取)访问所定义的所有本地名称的附加优点examplefunction(这些被称为闭包); 这允许您参数化nestedfunction()行为:
def examplefunction(base):
def nestedfunction():
return base * 2
return nestedfunction
examplefunction(5)() # produces 10
Run Code Online (Sandbox Code Playgroud)
我怀疑你的任务是试图教你这些原则.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |