python - 为什么我的 lambda 不起作用?

标签 python python-3.x

<分区>

我努力让 lambda 起作用。这里的代码是示例,但它很好地说明了我的问题。

lambdas = list()

for i in range(5):
    lambdas.append(lambda x:i*i*x)


print lambdas[0](1)
print lambdas[2](1)

这给了我 16,但我希望对不同的 lambda 有不同的值。为什么会这样!

最佳答案

在这段代码中:

for i in range(5):
    lambdas.append(lambda x:i*i*x)

i 的值在函数运行 时确定。当函数被定义时,i 的值丢失。

改用:

lambdas = list()

for i in range(5):
    lambdas.append(lambda x, i=i : i*i*x)  

print lambdas[0](1)
print lambdas[2](1)

这会产生:

0
4

之所以可行,是因为作为一种特殊情况,函数的默认参数(如上面的 i=i 中所示)会立即绑定(bind)。

关于python - 为什么我的 lambda 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245710/

相关文章:

python - Tensorflow - 断言失败 : [predictions must be in [0, 1]]

python - Pygame Sprite 表 hitbox 损坏

python - Python 会自动清除对象吗?

python - 从(相对)父文件夹导入 BeautifulSoup,并在其旁边导入一个 html 解析器

python - 根据条件计算某个值在 pandas 数据框中出现的次数

Python字典单键可以有多个值吗?

python - 无法在移动设备上打开 websocket

python - 通过 object.fk.id 和 object.fk_id 查找外键的区别

python-3.x - 如何在Scrapy CrawlSpider中找到当前的start_url?

python - 查找 tkinter.Text 小部件的当前大小