python - 函数依赖于可迭代对象

标签 python function

funcs = []
for i in range(3):
    a = i
    func = lambda x: a
    funcs.append(func)

print [func(0) for func in funcs]

我想打印[0,1,2] ,而是打印 [2,2,2] 。我明白发生了什么,问题是我该如何规避这个问题?

最佳答案

您可以通过使用关键字参数将 a 绑定(bind)到 lambda 的本地范围来解决此问题:

funcs = []
for i in range(3):
    a = i
    func = lambda x, a=a: a
    funcs.append(func)
print [func(0) for func in funcs]

输出:

[0, 1, 2]

关于python - 函数依赖于可迭代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881266/

相关文章:

shell脚本中的MySQL用户定义函数

function - 如何在 Scala 中优化这个短阶乘函数? (创建 50000 个 BigInt)

Python Telegram Bot 的 `get_chat_members_count` 和避免洪水限制或如何使用包装器和装饰器

python - 将 Celery 任务从 Redis 迁移到 RabbitMQ

python - 将输入解释为字符串和类成员名称

c - 如何使用fgetc读取文件

python - Python 2 和 Python 3 中 print 的细微差别

python - 如何使用数据库在 Django 中的应用程序之间交换数据?

c - 在 C 中通过引用传递

python - 如何处理 InvalidSchema 异常