动态调用函数 - Python

6 投票
8 回答
3539 浏览
提问于 2025-04-15 22:37

我有一系列的函数,比如:

def filter_bunnies(pets): ...

def filter_turtles(pets): ...

def filter_narwhals(pets): ...

有没有办法通过一个字符串来调用这些函数,字符串的内容就是函数的名字呢?

比如:

'filter_bunnies', 'filter_turtles', 'filter_narwhals'

8 个回答

2

你可以使用内置的函数 locals() 来获取一个包含变量和函数的字典,下面是一个例子:

def a(str):
    print("A" + str)

def b(str):
    print("B" + str)

def c(str):
    print("C" + str)

for f in ['a', 'b', 'c']:
    locals()[f]('hello')
4

是的,你可以使用:

globals()['filter_bunnies']()

来调用 'filter_bunnies'。

11

你的函数是某个对象的一部分吗?如果是的话,你可以使用 getattr 这个函数:

>> class A:
    def filter_bunnies(self, pets):
        print('bunnies')

>>> getattr(A(), 'filter_bunnies')(1)
bunnies

撰写回答