Python中用字符串调用函数或方法示例代码
2017-08-04 08:28
751 查看
前言
本文主要给大家介绍了关于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利用MethodType绑定方法到类示例代码
- Python方法的延迟加载的示例代码
- Python简单实现两个任意字符串乘积的方法示例
- Python基础教程代码与注释P46 3.3 字符串格式化:完整版 3.4 字符串方法
- python中实现指定时间调用函数示例代码
- 优化方法总结续篇:下降单纯形法(downhill simplex) 及python示例代码
- c#获取字符串宽度的示例代码(字节数方法)
- 精简代码:Python的split方法函数可以分割字符串成列表,默认是以空格作为分隔符sep来分割字符串。
- Python实现的从右到左字符串替换方法示例
- Python面向对象编程——类、对象、属性、方法示例代码
- Python使用中文正则表达式匹配指定中文字符串的方法示例
- python中根据字符串调用函数的实现方法
- Python对字符串实现去重操作的方法示例
- python 堆、队列操作、字符串格式化输出、字符串常用函数 示例代码
- Python实现生成随机日期字符串的方法示例
- Java String字符串最常见方法速查手册+代码示例详解
- python反转字符串(简单方法)及简单的文件操作示例
- 下面的代码示例使用 BeginGetRequestStream 方法对流实例发出异步请求。
- Delta3d 2.0中 鼠标选取物体的示例代码另外一种方法