在python中从列表调用函数

2024-06-07 05:09:02 发布

您现在位置:Python中文网/ 问答频道 /正文

举个例子:

presets = [
    "eggs",
    "bacon"
    ]

print(presets[0])
>>> eggs

为什么a不能做同样的事情,用一个要执行的项目列表?举个例子:

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)
    ]

当我运行这个命令时(有preset[n]和没有preset[n]),它执行列表中的所有三个命令。为什么会这样?我想有一个列表,这些预设,并呼吁他们通过am索引号码。我做错什么了?你知道吗


Tags: path命令列表eggstemplates例子finalpreset
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),

]

存储函数和参数而不调用函数的。您可以稍后在列表上迭代并执行该函数。你知道吗

可以将实际函数对象存储在列表中

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)

相关问题 更多 >