动态调用函数 - Python
我有一系列的函数,比如:
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