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基于Tkinter实现的记事本实例
Jun 17 Python
python比较两个列表大小的方法
Jul 11 Python
详解Django通用视图中的函数包装
Jul 21 Python
使用python实现rsa算法代码
Feb 17 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
详解Django中间件执行顺序
Jul 16 Python
Python中按值来获取指定的键
Mar 04 Python
windows下numpy下载与安装图文教程
Apr 02 Python
python实现动态数组的示例代码
Jul 15 Python
Python API自动化框架总结
Nov 12 Python
pytorch 实现模型不同层设置不同的学习率方式
Jan 06 Python
python抢购软件/插件/脚本附完整源码
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
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python内置函数的用法实例教程
2014/09/08 Python
Python中bisect的用法
2014/09/23 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
小学信息技术教学反思
2014/02/10 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
40岁生日感言
2014/02/15 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
洗发水广告词
2014/03/13 职场文书
婚庆司仪主持词
2014/03/15 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
2014年工程工作总结
2014/11/25 职场文书
工程项目合作意向书
2015/05/08 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Python合并多张图片成PDF
2021/06/09 Python