您当前的位置: 首页 >  Python
  • 0浏览

    0关注

    2393博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

一个处女座的程序猿 发布时间:2019-05-27 17:02:02 ,浏览量:0

Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

 

 

目录

问题提出

代码五种设计思路

T1方法:eval()

T2方法: locals() 和 globals()

T3方法:

T4、方法

T5方法

综合

 

 

 

问题提出

如何将提取得到的字符串(该字符串且等于函数名),此时该函数名是字符串格式,如何用作函数实现其功能?

 

 

代码五种设计思路 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')() 

 

综合
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')() 
关注
打赏
1664196048
查看更多评论
立即登录/注册

微信扫码登录

0.1130s