python - Python中动态调用函数的方法是什么?

标签 python

我想做这样的事情:

dct = ['do_this', 'do_that']
dct[0]() // call do_this

但是你不能将字符串作为函数来调用(会报错)。

如何在不切换且不使用 lambda 或函数列表的情况下实现这一点?

明确地说,我想通过名称引用该函数。

最佳答案

函数是 first-class objects在 Python 中:

def do_this():
    pass

def do_that():
    pass

dct = [do_this, do_that]
dct[0]()  # calls do_this()

如果 dct 绝对必须是字符串列表,我会使用 eval():

eval(dct[0] + "()")

这不是很漂亮,但是在适当的模块上的 globals()getattr() 之间切换可能会很痛苦。

关于python - Python中动态调用函数的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4018953/

相关文章:

python - 从页面获取特定图像

python - 计算 torch 张量数组的平均值和标准差

python - 如何将 FFMPEG 导出到我的 Python 程序中?

python - 使用 subprocess.Popen 时,使用可执行参数与将 exe 路径作为命令中的第一项有什么区别?

python - 了解使用锁和 Python GIL 的抢占式多任务处理?

python 老虎机 : Calculating Line Payouts

python - 将绘图中的线条与 matplotlib 图例中错误栏中的标记组合起来

python - 如何在while循环中只执行一次for循环中的if else语句

python - Docker容器入口点在挂载卷中没有此类文件错误

python - 我正在尝试使用插入方法在列表中已经存在的每个元素之后将相同的元素添加到我的列表中