举个例子:
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]
)时,它会执行列表中的所有三个命令。为什么是这样?我想有一个这些预设的列表,并通过索引号码调用它们。我做错了什么?
答案 0 :(得分:2)
它执行这些项目,因为这就是你告诉它要做的事情。您的代码与此完全相同:
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),
存储函数和参数而不调用函数。您可以在以后迭代列表并执行该功能。
答案 1 :(得分:1)
您可以将实际的功能对象存储在列表中
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)