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的Flask框架的简介和安装方法
Nov 13 Python
Python AES加密实例解析
Jan 18 Python
Python根据成绩分析系统浅析
Feb 11 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
python dict如何定义
Sep 02 Python
pyqt5打包成exe可执行文件的方法
May 14 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 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开发工具之vs2005图解
2008/01/12 PHP
.htaccess文件保护实例讲解
2011/02/06 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
php intval函数用法总结
2019/04/14 PHP
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
自荐信如何“自荐”
2013/10/24 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
幽默导游词开场白
2015/05/29 职场文书
python数字转对应中文的方法总结
2021/08/02 Python
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python