Python 用字符串名调用技巧
发布时间:2021-11-09 09:46:41 所属栏目:PHP教程 来源:互联网
导读:有时候,一些特殊情况,需要用到用字符串的方法名去调用方法。现在做个笔记避免以后一直搜。 如何使用字符串调用函数/方法? 有多种技巧可供选择。 最好的做法是使用一个将字符串映射到函数的字典。 这一技巧的主要优势在于字符串不必与函数名称一致。 这也
有时候,一些特殊情况,需要用到用字符串的方法名去调用方法。现在做个笔记避免以后一直搜。 如何使用字符串调用函数/方法? 有多种技巧可供选择。 最好的做法是使用一个将字符串映射到函数的字典。 这一技巧的主要优势在于字符串不必与函数名称一致。 这也是用于模拟其他语言中 case 结构的主要技巧: def a(): pass def b(): pass dispatch = {'go': a, 'stop': b} # Note lack of parens for funcs dispatch[get_input()]() # Note trailing parens to call function 使用内置函数 getattr() import foo getattr(foo, 'bar')() 请注意 getattr() 可用于任何对象,包括类、类实例、模块等等。 在标准库中多次使用了这个技巧,例如: class Foo: def do_foo(self): ... def do_bar(self): ... f = getattr(foo_instance, 'do_' + opname) f() 使用 locals() 或 eval() 来解析出函数名: def myFunc(): print("hello") fname = "myFunc" f = locals()[fname] f() f = eval(fname) f() 注意:使用 eval() 速度慢而且危险。 如果你不能绝对掌控字符串的内容,别人将能传入可被解析为任意函数直接执行的字符串。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |