我有多个不同的函数,还有一个字符串变量表示其中一个函数的名称。如何在不使用if的情况下调用该函数?

0 投票
1 回答
37 浏览
提问于 2025-04-12 23:04

像这样:

def f1(): ...
def f2(): ...
def f3(): ...
def f4(): ...

x = "f1"  # or "f2", "f3", or "f4"

然后我想调用一个和 x 的值相匹配的函数。

我想到的唯一方法就是用很多个 if 语句,但一旦函数变多,这样做会变得非常低效。

1 个回答

3

通常,你可以通过创建一个字典来实现这个功能,这个字典把函数的名字(字符串形式)和实际的函数对应起来:

table = {
    "f1": f1,
    "f2": f2,
    # etc
}

然后你可以用 x 来查找字典中对应的函数,并执行它:

table[x]()

撰写回答