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


山鹰
山鹰 2022-09-19 14:43:47 49924
分类专栏: 资讯

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

目录

问题提出

代码五种设计思路

T1方法:eval()

T2方法: locals() 和 globals()

T3方法:

T4、方法

T5方法

综合


问题提出

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

代码五种设计思路


T1方法:eval()

通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。

  1. print('eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。')
  2. for func in func_list:
  3.     eval(func)()

T2方法: locals() 和 globals()

是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。

  1. print('locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。')
  2. for func in func_list:
  3.     locals()[func]()
  4. for func in func_list:
  5.     globals()[func]()


    
T3方法:

  1. print('methodcaller方法')
  2. class Foo:
  3.     def do_foo(self):
  4.         print('执行do_foo()函数')
  5.  
  6.     def do_bar(self):
  7.         print('执行do_bar()函数')
  8.  
  9. f = Foo()
  10. from operator import methodcaller
  11. methodcaller('do_foo')(f)

T4、方法

  1. print('globals().get')
  2. globals().get('foo')


    
    

T5方法

getattr() 是 python 的内建函数,getattr(object,name) 就相当于 object.name,但是这里 name 可以为变量。

  1. print('getattr()方法')
  2. import foo
  3. getattr(foo, 'bar')() 

综合

  1. def foo():
  2. print("foo")
  3. def bar():
  4. print("bar")
  5. func_list = ["foo","bar"]
  6. T1方法:eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。
  7. print('eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。')
  8. for func in func_list:
  9. eval(func)()
  10. T2方法: locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。
  11. print('locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。')
  12. for func in func_list:
  13. locals()[func]()
  14. for func in func_list:
  15. globals()[func]()
  16. T3方法:
  17. print('methodcaller方法')
  18. class Foo:
  19. def do_foo(self):
  20. print('执行do_foo()函数')
  21. def do_bar(self):
  22. print('执行do_bar()函数')
  23. f = Foo()
  24. from operator import methodcaller
  25. methodcaller('do_foo')(f)
  26. T4、方法:
  27. print('globals().get')
  28. globals().get('foo')
  29. T5方法: getattr() 是 python 的内建函数,getattr(object,name) 就相当于 object.name,但是这里 name 可以为变量。
  30. print('getattr()方法')
  31. import foo
  32. getattr(foo, 'bar')()
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树基础语法123796 人正在系统学习中

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=3063
赞同 0
评论 0 条
山鹰L0
粉丝 0 发表 10 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2941
【软件正版化】软件正版化工作要点  2860
统信UOS试玩黑神话:悟空  2819
信刻光盘安全隔离与信息交换系统  2712
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1246
grub引导程序无法找到指定设备和分区  1213
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!