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 自动提交和抓取网页
Jul 13 Python
python追加元素到列表的方法
Jul 28 Python
Python模拟登录验证码(代码简单)
Feb 06 Python
django使用html模板减少代码代码解析
Dec 12 Python
Python Series从0开始索引的方法
Nov 06 Python
python下载微信公众号相关文章
Feb 26 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
python多线程实现TCP服务端
Sep 03 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
JSON 数据格式详解
2017/09/13 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
页面点击小红心js实现代码
2018/05/26 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python深入06——python的内存管理详解
2016/12/07 Python
Numpy之random函数使用学习
2019/01/29 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Python流程控制 if else实现解析
2019/09/02 Python
python爬虫实现获取下一页代码
2020/03/13 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
用python写PDF转换器的实现
2020/10/29 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
经济管理专业求职信
2014/06/09 职场文书
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python