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脚本来获取mp3文件tag信息的教程
May 04 Python
python3利用Dlib19.7实现人脸68个特征点标定
Feb 26 Python
flask中过滤器的使用详解
Aug 01 Python
Python标准库shutil用法实例详解
Aug 13 Python
python opencv 图像拼接的实现方法
Jun 27 Python
Form表单及django的form表单的补充
Jul 25 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
python 安装impala包步骤
Mar 28 Python
Python 列表反转显示的四种方法
Nov 16 Python
python 实现aes256加密
Nov 27 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
Python WSGI 规范简介
Apr 11 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
JQuery 常用方法基础教程
2009/02/06 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python3 读取Word文件方式
2020/02/13 Python
python代码中怎么换行
2020/06/17 Python
Python csv文件记录流程代码解析
2020/07/16 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
财务助理岗位职责
2013/11/10 职场文书
公司任命书范本
2014/06/04 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android