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函数中的默认参数
Mar 30 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
Python实现将xml导入至excel
Nov 20 Python
Python多进程写入同一文件的方法
Jan 14 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
Python中实现输入一个整数的案例
May 03 Python
详解python datetime模块
Aug 17 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
使用Apache的rewrite
2021/03/09 Servers
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
js导出txt示例代码
2014/01/14 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
Python操作Word批量生成文章的方法
2015/07/28 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
python爬虫容易学吗
2020/06/02 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
写给医生的感谢信
2015/01/22 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
小鞋子观后感
2015/06/05 职场文书
公司食堂管理制度
2015/08/05 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
Python sklearn分类决策树方法详解
2022/09/23 Python