python中根据字符串调用函数的实现方法


Posted in Python onJune 12, 2016

在python中可以根据字符串来调用函数:

1、使用getattr从字符串来调用函数

在多进程中,可能传递过来的是一个字符串,那么我怎么来调用一个已经存在的函数呢,主要就是使用到getattr函数的作用,这个函数就是在使用字符串得到这个字符串对应的函数的对象,然后就可以进行执行,如下所示:

在模块中,存在两个函数:

[root@python 530]# cat attr.py
#!/usr/bin/env python

def kel():
  print 'this is a kel function'


def smile():
  print 'this is a smile function'

if __name__ == '__main__':
  kel()
  smile()

在上面的attr模块中,定义了两个函数,一个函数为kel,另外一个函数为smile,那么我根据字符串kel和smile怎么执行函数呢,就是使用getattr函数,如下所示:

>>> import attr
>>> k = getattr(attr,'kel')
>>> k()
this is a kel function
>>> s = getattr(attr,'smile')
>>> s()
this is a smile function
>>> e = getattr(attr,'errors')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'errors'

在第一个中,直接导入模块,那么模块就是一个object,从而在getattr根据字符串kel获取到attr中的kel()函数,从而最后进行执行,这里也就实现了,根据字符串的不同,从而执行相应的函数。

2、 使用字典来调用函数

在上面模块的定义不变,但是在调用的时候,可以定义一个字典,根据字典的值来进行执行函数,如下所示:

>>> import attr
>>> d = {'kel':attr.kel,'smile':attr.smile}
>>> d['kel']()
this is a kel function
>>> d['smile']()
this is a smile function

从而可以使用字典值来进行调用函数。

以上两种方法主要就是用来,当传递过来一个字符串的时候,我该如何调用其他函数,那么第一种方法就是使用getattr来进行执行函数;第二种方法就是预先定义一个字典,然后执行字典的值即可。

以上这篇python中根据字符串调用函数的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
列举Python中吸引人的一些特性
Apr 09 Python
Python读取键盘输入的2种方法
Jun 16 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
Python中 map()函数的用法详解
Jul 10 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
浅谈Python中的函数(def)及参数传递操作
May 25 Python
Python虚拟环境virtualenv是如何使用的
Jun 20 Python
Python中的 No Module named ***问题及解决
Jul 23 Python
python中函数总结之装饰器闭包详解
Jun 12 #Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 #Python
深入理解python中的闭包和装饰器
Jun 12 #Python
Python编码爬坑指南(必看)
Jun 10 #Python
浅析Python中的for 循环
Jun 09 #Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 #Python
Python-嵌套列表list的全面解析
Jun 08 #Python
You might like
php木马攻击防御之道
2008/03/24 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php学习之流程控制实现代码
2011/06/09 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
JavaScript this 深入理解
2009/07/30 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
vue中 this.$set的用法详解
2019/09/06 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
pytorch打印网络结构的实例
2019/08/19 Python
virtualenv介绍及简明教程
2020/06/23 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
GWT的应用有哪两种部署模式
2012/12/21 面试题
六一儿童节演讲稿
2014/05/23 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
小学生作文评语集锦
2014/12/25 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
如何正确理解python装饰器
2021/06/15 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript