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实现斐波那契递归函数的方法
Sep 08 Python
Python中__name__的使用实例
Apr 14 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
基于python绘制科赫雪花
Jun 22 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
python中的for循环
Sep 28 Python
python中的json总结
Oct 11 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 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中static关键字原理的学习研究分析
2011/07/18 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
javascript基础知识讲解
2017/01/11 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
python让函数不返回结果的方法
2020/06/22 Python
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
小学教师先进事迹材料
2014/12/15 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
python井字棋游戏实现人机对战
2022/04/28 Python
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android