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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 Python
Python中的id()函数指的什么
Oct 17 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
python实现计算器功能
Oct 31 Python
Python 项目转化为so文件实例
Dec 23 Python
python数据分析工具之 matplotlib详解
Apr 09 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
建立动态的WML站点(一)
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JS定时器实例
2013/04/17 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
python贪吃蛇游戏代码
2020/04/18 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
工作自我评价怎么写
2014/01/29 职场文书
电力安全事故反思
2014/04/27 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS