gpt4 book ai didi

python - 包含 lambda 表达式的函数背后的机制是什么? (Python)

转载 作者:行者123 更新时间:2023-12-04 01:21:06 25 4
gpt4 key购买 nike

在教程中,我偶然发现了以下示例。我得到了函数的一般目的和机制。他们获得诸如“a”、“b”和“c”之类的参数(如下例)。但是为什么我们可以将函数“链接”到一个对象 f,该对象本身可以包含 0 作为参数,然后由我们的 lambda 表达式计算?

def build_quadratic_function(a,b,c):
return lambda x: a*x**2 + b*x+c

f = build_quadratic_function(2,3,-5)

f(0)

产量:

-5

通俗地说,函数如何“知道”0 必须由函数中包含的 lambda 表达式读取?有人可以解释一下它背后的机制吗?

谢谢!

最佳答案

def build_quadratic_function(a,b,c):
return lambda x: a*x**2 + b*x + c

(在所有重要方面)等同于

def build_quadratic_function(a,b,c):
def func(x):
return a*x**2 + b*x + c
return func

在这两种情况下,内部函数,无论是否是匿名函数,都持有封闭范围内的变量。你已经发现了所谓的闭包。

>>> import inspect
>>> f = build_quadratic_function(2, 3, -5)
>>> inspect.getclosurevars(f)
ClosureVars(nonlocals={'a': 2, 'b': 3, 'c': -5}, globals={}, builtins={}, unbound=set())

关于python - 包含 lambda 表达式的函数背后的机制是什么? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62644538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com