python如何使用字符串调用函数/方法?

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

回到顶部