python - 如何在python中制作函数列表?

标签 python function pointers

<分区>

我试图实现这样的目标

list1 = [lambda x: x+0, lambda x: x+1]

通过这样做

list2 = [lambda x: x+n for n in range(2)]

但是没用! (为什么不?) 如何以编程方式创建函数列表?

最佳答案

n 由 for 表达式重新赋值,因此在 for 表达式完成后,两者都会看到 n 的值为 1。

在没有列表表达式的情况下可以看到此问题的更多典型示例:

list3 = []
for n in range(2):
    def f(x):
        return x + n
    list3.append(f)

这里所有创建的函数对象都将引用相同的变量 n 并且它会被赋值为 1 并且两个函数对象都将作为 lambda x: x + 1 .

您可以通过为每个创建的函数创建一个带有变量的附加范围来处理它:

a = [(lambda n: lambda x: x+n)(n) for n in range(2)]

关于python - 如何在python中制作函数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172312/

相关文章:

c++ - C++中如何判断传入缓冲区是否有效?

python - 使用 zsh 更改 virtualenv 实例的提示样式

python - pygame - 如何用字体和颜色显示文本?

c - C中通过void函数初始化指向结构体的指针

sql-server - SQL Server HashBytes 函数

javascript - JSON.stringify 的单行输出

python - 访问对象的对象属性数组会在 python 中给出属性错误

python - 在 Web2py Python 中格式化日期

c - sizeof 运算符的行为?

c - 从带有指针的函数返回更大类型的日期