python - 调用python函数
问题描述
下面是在用户定义函数中使用 lambda 函数的示例:
def sample_func(a): #1
return lambda a:a*a
当这被调用时,
s=sample_func(2) #2
print(s)
输出似乎是一个函数地址<function sample_func.<locals>.<lambda> at 0000xx
在上面分配给变量之后s
,下面
s(5) #3
返回 25。
python lambda的新手,解释这个的正确方法是什么,解释器如何处理#2中的参数以及为什么#2中没有返回4,谢谢你的帮助!
解决方案
sample_func
是一个函数工厂,它返回函数(在本例中为 lambda 函数)。
所以返回值sample_func
是一个函数本身。因此,当您将它存储在#2 中的变量中时,您将 lambda 函数存储在那里。它相当于:
s = lambda x: x*x
然后当您调用函数 s(5) 时,它使用 x=5,并返回 5 5=25。类似地,s(4) 使用 x=4,并返回 4 4=16。
在更一般的意义上,lambda *args: return_value
.
在这种情况下,参数a
ofsammple_func
是未使用的,因为我们在 lambda 中重新声明了它。
def sample_func(a): #1
return lambda a: a*a
相当于:
def sample_func(_): #1
return lambda a: a*a
如果你想a
从sample_func
lambda 内部访问,只需调用 lambda 的参数:
def sample_func(a):
return lambda x: a * x
现在,如果您运行代码,s(5)
将返回10
,等于2 * 5
推荐阅读
- asp.net - 为 asp.net 应用程序部署指定 DeployIisAppPath
- c# - 将事件监听器绑定到来自其他页面视图 (MVVM) 的事件
- docker - Docker 作为具有现有 ssh 密钥的 SSH 代理
- excel-formula - 使用 Excel 公式计算复合增长的平均百分比
- javascript - 获取用户电子邮件 wordpress
- python - python pypyodbc 不会选择数据
- tcl - TCL lindex 从列表元素中删除引号
- javascript - React 中的简单轮播 - 如何注册滚动到下一张幻灯片?
- variables - Gitlab Ci文件变量内容而不是路径
- vue.js - 如何创建一个可以由 Nuxt 导入的动态导入库?