当前位置: 首页 > 编程笔记 >

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

佴飞驰
2023-03-14
本文向大家介绍python中根据字符串调用函数的实现方法,包括了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中根据字符串调用函数的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊html" target="_blank">教程。

 类似资料:
  • 本文向大家介绍JavaScript通过字符串调用函数的实现方法,包括了JavaScript通过字符串调用函数的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript通过字符串调用函数的实现方法。分享给大家供大家参考。具体分析如下: JavaScript中我们可以把根据函数名的字符串来调用函数,这样我们就可以实现动态函数调用,只需要传递一个函数的名字即可调用该函数。  

  • 问题内容: 几天前,我在网上搜索时,发现了一篇有关python词典的有趣文章。这是关于使用字典中的键来调用函数。在那篇文章中,作者定义了一些函数,然后定义了一个字典,其键与函数名完全相同。然后,他可以从用户那里获得输入参数并调用相同的方法(类似于实现大小写中断)。此后,我意识到同样的事情,但有所不同。我想知道如何实现这一目标。如果我有一个功能: 现在,如果我有这样的字符串: 有没有一种方法可以执行

  • 问题内容: 有没有一种方法可以使用新的格式语法来格式化函数调用中的字符串?例如: 因此它在字符串 内部* 调用函数函数,而不是在格式化函数中作为参数。 * 编辑:这是另一个示例,可能会更好地显示我的挫败感,这就是我想要的: 这是我要避免的事情: 问题答案: Python 3.6添加了文字字符串插值,并以前缀编写。请参阅PEP 0498-文字字符串插值 。 这允许一个人写 应当注意,这些不是实际的字

  • 问题内容: 我有一个str对象,例如:。我想从此字符串运行安装方法。例如,当我打电话时它将呼叫。有什么办法吗? 问题答案: 如果在课程中,则可以使用getattr: 或者它是一个函数:

  • 本文向大家介绍C#实现根据字节数截取字符串并加上省略号的方法,包括了C#实现根据字节数截取字符串并加上省略号的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#按字节数截取字符串并在后面加上省略号...的方法,这是一个自定义的C#函数,函数的使用说明如下: 函数代码如下: 以下所示示例也是根据字节数截取字符串的,只是这个函数后面不加省略号……

  • 问题内容: 我正在使用Angularjs开发应用程序,并在页面中添加使用。我想在上面动态添加的内容中调用一个函数。我的html和脚本如下。 的HTML Java脚本 jsfiddle 点击这里查看 问题答案: 这有点棘手,因为将只插入普通的旧html而不用麻烦对其进行编译(因此html中的任何指令都不会被angular处理。 诀窍是在模板更改时找到一种编译方法。例如,您可以创建一个执行此操作的指令