Skip to main content
 首页 » 编程设计

python之将 lambda 表达式转换为简单函数

2025年05月04日8bonelee

我很好奇是否可以在以下情况下避免使用 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 

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

  1. 在 f = square_fun(1, 2, 3) 行中,f 实际上会映射到内部函数(又名。result)
  2. 请注意返回结果最后没有(),因此函数还没有被调用
  3. 函数在 print(f(1)) 中被调用,变量 x 的值是 1
  4. 最后,结果函数使用 x、a、b 和 c 返回计算值(来自square_fun(1, 2, 3))

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