Python中用字符串调用函数或方法示例代码


Posted in Python onAugust 04, 2017

前言

本文主要给大家介绍了关于Python用字符串调用函数或方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

先看一个例子:

>>> def foo():
    print "foo"

>>> def bar():
    print "bar"

>>> func_list = ["foo","bar"]
>>> for func in func_list:
    func()
TypeError: 'str' object is not callable

我们希望遍历执行列表中的函数,但是从列表中获得的函数名是字符串,所以会提示类型错误,字符串对象是不可以调用的。如果我们想要字符串变成可调用的对象呢?或是想通过变量调用模块的属性和类的属性呢?

以下有三种方法可以实现。

eval()

>>> for func in func_list:
    eval(func)()
foo
bar

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

locals()和globals()

>>> for func in func_list:
    locals()[func]()
foo
bar

>>> for func in func_list:
    globals()[func]()
foo
bar

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

getattr()

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

返回 foo 模块的 bar 方法

>>> import foo
>>> getattr(foo, 'bar')()

返回 Foo 类的属性

>>> class Foo:
  def do_foo(self):
    ...

  def do_bar(self):
    ...

>>> f = getattr(foo_instance, 'do_' + opname)
>>> f()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

参考

Calling a function of a module from a string with the function's name in Python

How do I use strings to call functions/methods?

Python 相关文章推荐
跟老齐学Python之从if开始语句的征程
Sep 14 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
python爬虫基础知识点整理
Jun 02 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
Python内置函数property()如何使用
Sep 01 Python
如何使用Python调整图像大小
Sep 26 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
Pycharm配置autopep8实现流程解析
Nov 28 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
Opencv实现二维直方图的计算及绘制
Jul 21 Python
Python编程实现的图片识别功能示例
Aug 03 #Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 #Python
详解 Python中LEGB和闭包及装饰器
Aug 03 #Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 #Python
python中MethodType方法介绍与使用示例
Aug 03 #Python
初学python的操作难点总结(新手必看篇)
Aug 03 #Python
python 禁止函数修改列表的实现方法
Aug 03 #Python
You might like
php采集时被封ip的解决方法
2010/08/29 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
js三种排序算法分享
2012/08/16 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
教你安装python Django(图文)
2013/11/04 Python
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python删除列表中重复记录的方法
2015/04/28 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
python记录程序运行时间的三种方法
2017/07/14 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
可口可乐广告词
2014/03/20 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
2014年班务工作总结
2014/12/02 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
800字作文之大雪
2019/12/04 职场文书