python - 在 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
?
解决方案
也许这会有所帮助: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
?”,正如其他人在评论中提到的那样:它管理当前范围的变量。
推荐阅读
- blogger - BLOGGER Emporio 根据标签提供颜色
- c - C异常无效输出
- php - Laravel 8,用户可以操纵会话吗?
- python - Python:简单的代码给出了“生成器对象”,为什么?
- mysql - MySql删除查询太慢,永远运行
- r - 首先根据列表按列对数据框进行排序,然后在另一列中对数字进行升序
- django-views - 在 Django 中,我试图从数据库中呈现信息。'MoneyMaker' 是我的模型的名称。当我尝试使用以下代码时出现错误
- c - 未正确读取图像二进制数据
- matlab - 如何在功率延迟分布中找到两个或多个峰值的样本空间
- date - 是否有任何功能可以轻松将 MBox 日期格式转换为 Delphi TDateTime 格式?