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中返回字典键的值的values()方法使用
May 22 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
值得收藏的10道python 面试题
Apr 15 Python
python算法题 链表反转详解
Jul 02 Python
Pytorch中.new()的作用详解
Feb 18 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
Python实现自动装机功能案例分析
Oct 22 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
如何在向量化NumPy数组上进行移动窗口
May 18 Python
Python之matplotlib绘制折线图
Apr 13 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
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python中分数的相关使用教程
2015/03/30 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Python 实现链表实例代码
2017/04/07 Python
解决python线程卡死的问题
2019/02/18 Python
python cumsum函数的具体使用
2019/07/29 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
计算s=f(f(-1.4))的值
2014/05/06 面试题
社区学雷锋活动策划方案
2014/01/30 职场文书
连锁超市项目计划书
2014/09/15 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
python利用while求100内的整数和方式
2021/11/07 Python
box-shadow单边阴影的实现
2023/05/21 HTML / CSS