繁体   English   中英

从python中的列表调用函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM