我想做这样的事情:
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/