kai*_*ami 1 python lambda python-3.x
我很好奇在以下情况下是否有可能避免使用lambda表达式。
例如,使用lambda表达式,我可以简单地定义一个返回lambda exp的函数。
def square_fun(a,b,c):
return lambda x: a*x**2 + b*x + c
Run Code Online (Sandbox Code Playgroud)
之后我们可以使用以下命令调用它:
f = square_fun(1,2,3)
f(1) # here x = 1
Run Code Online (Sandbox Code Playgroud)
如何获得避免lambda表达式的相同行为?
例如,square_fun必须返回另一个函数
def square_fun(a,b,c):
return f...
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
因此,我将尝试解释这里发生的情况:
f = square_fun(1, 2, 3),f将实际被映射到内部功能(又名。result)return result没有()底,因此功能尚未被称为print(f(1))变量x取值1为它的值x,和a,b和c(来自square_fun(1, 2, 3))您可以在此处找到其他信息=> https://www.learnpython.org/en/Closures
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |