python如何使用字符串调用函数/方法?
有多种技巧可供选择。
最好的做法是使用一个将字符串映射到函数的字典。 这一技巧的主要优势在于字符串不必与函数名称一致。 这也是用于模拟其他语言中 case 结构的主要技巧:
defa():
pass
defb():
pass
dispatch={"go":a,"stop":b}# Note lack of parens for funcs
dispatch[get_input()]()# Note trailing parens to call function
使用内置函数
getattr()
importfoo
getattr(foo,"bar")()
请注意
getattr()
可用于任何对象,包括类、类实例、模块等等。在标准库中多次使用了这个技巧,例如:
classFoo:
defdo_foo(self):
...
defdo_bar(self):
...
f=getattr(foo_instance,"do_"+opname)
f()
使用
locals()
或eval()
来解析出函数名:defmyFunc():
print("hello")
fname="myFunc"
f=locals()[fname]
f()
f=eval(fname)
f()
注意:使用
eval()
速度慢而且危险。 如果你不能绝对掌控字符串的内容,别人将能传入可被解析为任意函数直接执行的字符串。
以上是 python如何使用字符串调用函数/方法? 的全部内容, 来源链接: utcz.com/z/520612.html