python中根据字符串调用函数的实现方法

 更新时间:2016年06月12日 17:12:39   投稿:jingxian  
下面小编就为大家带来一篇python中根据字符串调用函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考,一起跟随小编过来看看吧

在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 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Pythonic版二分查找实现过程原理解析

    Pythonic版二分查找实现过程原理解析

    这篇文章主要介绍了Pythonic版二分查找实现过程原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python 微信爬虫完整实例【单线程与多线程】

    Python 微信爬虫完整实例【单线程与多线程】

    这篇文章主要介绍了Python 微信爬虫,结合完整实例形式分析了Python基于单线程与多线程模式爬取微信信息相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • 在java中如何定义一个抽象属性示例详解

    在java中如何定义一个抽象属性示例详解

    这篇文章主要给大家介绍了关于在java中如何定义一个抽象属性示例详解的相关资料,需要的朋友可以参考下
    2017-08-08
  • python中eval与int的区别浅析

    python中eval与int的区别浅析

    这篇文章主要给大家介绍了关于python中eval与int的区别,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Python多线程爬取豆瓣影评API接口

    Python多线程爬取豆瓣影评API接口

    这篇文章主要介绍了Python多线程爬取豆瓣影评API接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python api构建tensorrt加速模型的步骤详解

    Python api构建tensorrt加速模型的步骤详解

    小编个人认为python比c++更容易读并且已经有很多包装很好的科学运算库(numpy,scikit等),今天通过本文给大家分享Python api构建tensorrt加速模型的步骤,感兴趣的朋友一起看看吧
    2021-09-09
  • 深入理解python虚拟机如何实现闭包

    深入理解python虚拟机如何实现闭包

    当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了,所以本文就来从虚拟机层面和大家一起讨论函数闭包是如何实现的
    2023-10-10
  • Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例

    Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例

    这篇文章主要介绍了Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法,结合实例形式分析了Python使用pymysql模块的fetchone(), fetchmany(), fetchall()方法进行mysql数据库查询的操作技巧,需要的朋友可以参考下
    2019-10-10
  • matplotlib实现数据实时刷新的示例代码

    matplotlib实现数据实时刷新的示例代码

    这篇文章主要介绍了matplotlib实现数据实时刷新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论