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实现socket客户端和服务端简单示例
Feb 24 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
python操作excel的方法
Aug 16 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
Python 动态变量名定义与调用方法
Feb 09 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python openpyxl 插入折线图实例
Apr 17 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
如何使用Tkinter进行窗口的管理与设置
Jun 30 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 模拟POST|GET操作实现代码
2010/07/20 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
用JS实现的一个include函数
2007/07/21 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
Python性能优化的20条建议
2014/10/25 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Python批量启动多线程代码实例
2020/02/18 Python
python实现五子棋程序
2020/04/24 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
在校生钳工实习自我鉴定
2013/09/19 职场文书
最新销售员个人自荐信
2013/09/21 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
护士的岗位职责
2013/12/04 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
绩效考核实施方案
2014/03/18 职场文书
质量承诺书范文
2014/03/27 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python