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 相关文章推荐
python3 与python2 异常处理的区别与联系
Jun 19 Python
Python中functools模块函数解析
Mar 12 Python
Django自定义分页效果
Jun 27 Python
python 常用的基础函数
Jul 10 Python
django如何实现视图重定向
Jul 24 Python
python实现大学人员管理系统
Oct 25 Python
Django 再谈一谈json序列化
Mar 16 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
python基础之文件处理知识总结
May 23 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
Python素数检测的方法
2015/05/11 Python
python中argparse模块用法实例详解
2015/06/03 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Django学习之文件上传与下载
2019/10/06 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
.net面试题
2016/09/17 面试题
行政文员岗位职责
2013/11/08 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
销售冠军获奖感言
2014/02/03 职场文书
工厂见习报告范文
2014/10/31 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
离婚案件上诉状
2015/05/23 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书