Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
目录
如何将提取得到的字符串(该字符串且等于函数名),此时该函数名是字符串格式,如何用作函数实现其功能?
通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。
- print('eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。')
- for func in func_list:
- eval(func)()
是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。
- print('locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。')
- for func in func_list:
- locals()[func]()
- for func in func_list:
- globals()[func]()
- print('methodcaller方法')
- class Foo:
- def do_foo(self):
- print('执行do_foo()函数')
-
- def do_bar(self):
- print('执行do_bar()函数')
-
- f = Foo()
- from operator import methodcaller
- methodcaller('do_foo')(f)
- print('globals().get')
- globals().get('foo')
getattr() 是 python 的内建函数,getattr(object,name) 就相当于 object.name,但是这里 name 可以为变量。
- print('getattr()方法')
- import foo
- getattr(foo, 'bar')()
- def foo():
- print("foo")
-
- def bar():
- print("bar")
- func_list = ["foo","bar"]
-
-
-
- T1方法:eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。
- print('eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。')
- for func in func_list:
- eval(func)()
-
- T2方法: locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。
- print('locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。')
- for func in func_list:
- locals()[func]()
- for func in func_list:
- globals()[func]()
-
- T3方法:
- print('methodcaller方法')
- class Foo:
- def do_foo(self):
- print('执行do_foo()函数')
-
- def do_bar(self):
- print('执行do_bar()函数')
-
- f = Foo()
- from operator import methodcaller
- methodcaller('do_foo')(f)
-
-
- T4、方法:
- print('globals().get')
- globals().get('foo')
-
-
-
- T5方法: getattr() 是 python 的内建函数,getattr(object,name) 就相当于 object.name,但是这里 name 可以为变量。
- print('getattr()方法')
- import foo
- getattr(foo, 'bar')()
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!