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

作者:jingxian 时间:2023-10-03 03:40:12 

在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,字符串,函数
0
投稿

猜你喜欢

  • Python Pandas读取Excel日期数据的异常处理方法

    2021-12-10 11:22:55
  • python文件与路径管理方法

    2022-06-15 13:38:06
  • JS 显示当前日期+星期(静态)

    2007-09-11 13:29:00
  • SQLServer 2005中如何列所有存储过程

    2008-11-24 17:39:00
  • 网站设计中的面包屑[译]

    2009-03-22 15:42:00
  • python采集博客中上传的QQ截图文件

    2021-03-03 16:45:25
  • python 多进程并行编程 ProcessPoolExecutor的实现

    2023-10-23 14:41:56
  • Python模块/包/库安装的六种方法及区别

    2021-11-03 15:53:56
  • Python数据正态性检验实现过程

    2022-07-10 15:46:14
  • oracle 删除重复数据

    2009-07-23 14:46:00
  • python openCV实现摄像头获取人脸图片

    2021-08-16 08:21:03
  • 百分百弹窗

    2013-08-07 07:41:06
  • 面向对象CSS FAQ[译]

    2009-10-27 15:59:00
  • 详解Django将秒转换为xx天xx时xx分

    2023-06-14 22:52:12
  • python利用7z批量解压rar的实现

    2021-05-02 18:58:31
  • 分享一个Emeditor压缩样式的宏

    2010-08-16 12:30:00
  • Django框架登录加上验证码校验实现验证功能示例

    2023-05-09 10:00:34
  • python re正则表达式模块(Regular Expression)

    2021-01-26 20:22:26
  • python脚本框架webpy入门安装及应用创建

    2023-08-23 05:08:51
  • python实现周期方波信号频谱图

    2021-04-11 00:11:46
  • asp之家 网络编程 m.aspxhome.com