首页 > 解决方案 > 将 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...

标签: pythonpython-3.xlambda

解决方案


在 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

所以,我将尝试解释这里发生了什么:

  1. 在行f = square_fun(1, 2, 3)中,f实际上将映射到内部函数(aka. result
  2. 请注意,末尾return result没有(),因此尚未调用该函数
  3. 函数被调用,print(f(1))变量作为x1的值
  4. x最后,结果函数使用, 和a,bc(from square_fun(1, 2, 3))返回计算值

您可以在此处找到更多信息 => https://www.learnpython.org/en/Closures


推荐阅读