首页 > 解决方案 > 在 Python 中返回嵌套函数

问题描述

def raise_val(n):
    """Return the inner function."""

    def inner(x):
    """Raise x to the power of n."""
        raised = x ** n
        return raised

    return inner

square = raise_val(2)

cube = raise_val(3)

print(square(2), cube(4))

输出:

4 64

任何人都可以向我解释为什么square(2)知道通过的论点是x

标签: pythonpython-3.x

解决方案


也许这会有所帮助:https ://stackabuse.com/python-nested-functions/

请注意,您“两次发送参数”(不是真的):第一次square = raise_val(2)square(2). 怎么了?第一次调用返回一个函数:你调用 raise_val,它返回 inner,它是一个函数。现在 square 变量实际上包含一个函数。第二次调用,square(2),只是调用函数。

它与以下内容相同:

def a(x):
   print(x)

square = a 
print(square(5))

在此示例中,square 包含一个函数。这与您的代码中的相同,因为 raise_val 返回一个函数。Square 持有inner方法,后来被调用。您x直接发送:square(2)当然为 x 发送 2。一个更有趣的可能是“内部记忆如何n?”,正如其他人在评论中提到的那样:它管理当前范围的变量。


推荐阅读