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中的继承和多态的概念
Apr 27 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python中kmeans聚类实现代码
Feb 23 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
Python TKinter如何自动关闭主窗口
Feb 26 Python
python函数map()和partial()的知识点总结
May 26 Python
python如何进行矩阵运算
Jun 05 Python
Python如何读写字节数据
Aug 05 Python
python利用opencv保存、播放视频
Nov 02 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
Python中npy和mat文件的保存与读取
Apr 24 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去除二维数组的重复项方法
2015/11/03 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python爬取内容存入Excel实例
2019/02/20 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
python 怎样进行内存管理
2020/11/10 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
导游的职业规划书范文
2013/12/27 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
本科生求职信
2014/06/17 职场文书
党员进社区活动总结
2015/05/07 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers