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使用threading获取线程函数返回值的实现方法
Nov 15 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
python批量爬取下载抖音视频
Jun 17 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python访问hdfs的操作
Jun 06 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
python 制作一个gui界面的翻译工具
May 14 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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轻松实现中英文混排字符串截取
2014/05/28 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
python中元类用法实例
2014/10/10 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python中pygame安装方法图文详解
2015/11/11 Python
python放大图片和画方格实现算法
2018/03/30 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
python集合删除多种方法详解
2020/02/10 Python
利用python实现逐步回归
2020/02/24 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
秘书岗位职责
2013/11/18 职场文书
集体婚礼策划方案
2014/02/22 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
高三物理教学反思
2016/02/20 职场文书