如何在python中使用(var1)(var2)表示法将函数应用于值

Sre*_*i R 1 python function

我正在解决python中的一些问题.在其中一个问题中,它要求我编写一个函数,以便在 examplefunction([1, 2, 3, 4])(10)返回时可以说10.

麻烦的是,我从未见过使用double ()()来表示在python中调用函数的符号.

我已经尝试查看堆栈溢出的多个帖子,例如 Python:将函数应用于嵌套字典中的值

但毫无疑问,这样的问题.

Mar*_*ers 7

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)

我怀疑你的任务是试图教你这些原则.