gpt4 book ai didi

Python Lambda 行为

转载 作者:太空狗 更新时间:2023-10-30 00:42:08 25 4
gpt4 key购买 nike

我正在努力了解 Python 中的 lambda 表达式、闭包和作用域。为什么这里第一行程序没有崩溃?

>>> foo = lambda x: x + a
>>> foo(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
NameError: global name 'a' is not defined
>>> a = 5
>>> foo(2)
7
>>>

最佳答案

因为那不是 Python 函数的工作方式;它对 lambda 并不特别:

>>> def foo(x):
... return x + a
>>> foo
<function foo at 0xb7dde454>
>>> foo(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
NameError: global name 'a' is not defined

变量是在使用时查找的,而不是在定义函数时查找的。甚至每次调用函数时都会查找它们,如果您来自 C 背景(例如),您肯定会发现这出乎意料,但这在 Python 中不是问题。

关于Python Lambda 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294134/

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