python - 是否可以创建 "def"的列表?

标签 python list function

我想知道是否可以创建一个“def”列表,连接 20 个按钮的列表,并为每个按钮设置不同的回调。

谢谢

最佳答案

Python 中的

def 只是一个将名称绑定(bind)到函数/闭包的常规语句。例如你可以写

flist = []
for i in range(30):
    def func(x, i=i):
        print(x * i)
    flist.append(func)

之后flist[7](6)将返回42。

棘手的部分只是上面声明中的i=i。这是必需的,因为闭包捕获变量,而不是当前变量值。如果没有 i=i,所有函数都将使用用于循环的相同变量 i

Python 还对匿名函数有一些支持,因此在上面的简单情况下,代码可以缩短为

flist = []
for i in range(30):
    flist.append(lambda x, i=i: print(x * i))

但是lambda非常有限(只有一个表达式,没有语句)

关于python - 是否可以创建 "def"的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27076496/

相关文章:

Python、Scikit-learn、K-means : What does the parameter n_init actually do?

r - 如何将 `combn` 向量的每个元素的每个组合放入单个列表中

c - 这个 C 语言的反向字符串函数写得不好吗?/如何使这段代码更好?

c - 在计算三个值的中间值的程序中使用宏

python3/hy - 评估 python 中的 hy 表达式?

Python,写东西到json

python - 如何在 DEAP 中测试收敛性(帕累托前沿的平滑度)

r - 在列表中查找对象的位置编号

Python:列表参数传递

javascript - 类如何在react中调用其他类函数?