[英]calling a function from a list in python
举个例子:
presets = [
"eggs",
"bacon"
]
print(presets[0])
>>> eggs
为什么不能用要执行的项目列表来做同样的事情? 举个例子:
from animations import animation_2, animation_3, animation_4
presets = [
animation_2.iterate(animations_templates_path, thumbnails_final),
animation_3.iterate(animations_templates_path, thumbnails_final),
animation_4.iterate(animations_templates_path, thumbnails_final)
]
当我运行此命令时(WITH和WITHOUT不带preset[n]
),它将执行列表中的所有三个命令。 为什么是这样? 我想列出这些预设,并通过索引号调用它们。 我究竟做错了什么?
它执行项目,因为这就是您要执行的操作。 您的代码与此完全相同:
p1 = animation_2.iterate(animations_templates_path, thumbnails_final)
p2 = animation_3.iterate(animations_templates_path, thumbnails_final)
p3 = animation_4.iterate(animations_templates_path, thumbnails_final)
presets = [p1, p2, p3]
Python无法知道您不打算调用这些函数。
一种解决方案是存储元组:
presets = [
(animation_2.iterate, animations_templates_path, thumbnails_final),
(animation_3.iterate, animations_templates_path, thumbnails_final),
(animation_4.iterate(animations_templates_path, thumbnails_final),
]
该函数存储函数和参数,而无需调用函数。 您可以在以后迭代列表并执行该功能。
您可以将实际功能对象存储在列表中
from animations import animation_1, animation_2, animation_3
presets = [
animation_2.iterate,
animation_3.iterate,
animation_4.iterate
]
然后根据其索引调用所需的函数。 这样,函数不会在构造list
执行,而是仅在调用它后才执行。
presets[0](animations_templates_path, thumbnails_final)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.