python - 将 lambda 表达式转换为简单函数
问题描述
我很好奇在以下情况下是否可以避免使用 lambda 表达式。
例如使用 lambda 表达式,我可以简单地定义一个返回 lambda exp 的函数。
def square_fun(a,b,c):
return lambda x: a*x**2 + b*x + c
在我们可以使用以下方法调用它之后:
f = square_fun(1,2,3)
f(1) # here x = 1
如何避免 lambda 表达式获得相同的行为?
例如,square_fun 必须返回另一个函数
def square_fun(a,b,c):
return f...
解决方案
在 python 中,您可以在另一个函数中定义一个函数,因此以下代码段应该为您提供相同的行为:
def square_fun(a, b, c):
def result(x):
return a*x**2 + b*x + c
return result
f = square_fun(1, 2, 3)
print(f(1))
# Should print 6
所以,我将尝试解释这里发生了什么:
- 在行
f = square_fun(1, 2, 3)
中,f
实际上将映射到内部函数(aka.result
) - 请注意,末尾
return result
没有()
,因此尚未调用该函数 - 函数被调用,
print(f(1))
变量作为x
它1
的值 x
最后,结果函数使用, 和a
,b
和c
(fromsquare_fun(1, 2, 3)
)返回计算值
您可以在此处找到更多信息 => https://www.learnpython.org/en/Closures
推荐阅读
- java - 如何将不同的组合框添加到单元格
- android - Android获取当前日历视图的年月
- sql-server - MVC 在同一视图中使用 where 子句显示不同的数据部分
- javascript - Javascript:在另一个 php 文件中设置函数的间隔
- javascript - 图像不显示在 innerHTML 中
- c++ - C++ 11 字符串标记搜索
- python - 使用 os.path.join 在错误位置创建日志文件
- c++ - 尽管一切似乎都是正确的,VSCode 无法识别 g++?
- c# - 单击后动态创建的按钮消失
- reactjs - react-ultimate-pagination 如何设置 bootstrap 3 主题