python中根据字符串调用函数

原创 2016年05月30日 14:13:36

在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中用字符串来调用函数

参考: http://blog.sina.com.cn/s/blog_76e94d210100w1bl.html https://taizilongxu.gitbooks.io/stackover...
  • u012375924
  • u012375924
  • 2016年06月28日 22:40
  • 1611

Python中的字符串执行函数

exec和eval语句  exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。 exec(...
  • franktan2010
  • franktan2010
  • 2015年02月16日 15:04
  • 1778

根据字符串名称动态调用Python的函数和对象方法

#!/usr/bin/python #coding: UTF-8 """ @author: CaiKnife 根据函数名称动态调用 """ def do_foo(): print "foo...
  • caiknife
  • caiknife
  • 2013年01月28日 10:02
  • 22646

通过同名字符串来调用函数<python>

相信使用python的各位童鞋,总会有这样的需求:通过一个同名的字符串来调用一个函数。其他的语言是如何实现,不太清楚。但是python提供一个强大的内建函数getattr(),可以实现这样的功能。 ...
  • jackaduma
  • jackaduma
  • 2011年10月19日 22:48
  • 7962

python关于调用函数外的变量

class Solution(object): def foo(self, s): def bar(a): s += a pri...
  • p323029
  • p323029
  • 2017年01月09日 06:59
  • 1850

python3的函数调用

python定义一个函数 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文...
  • nuli888
  • nuli888
  • 2016年07月19日 19:26
  • 2376

python调用函数、类和文件总结

调用函数有三种方式 一,导入整个模块(所有函数) 导入 import module_name 调用 module_name.function_name()     #在这种情况...
  • LuckyQueen0928
  • LuckyQueen0928
  • 2017年11月27日 10:41
  • 129

python函数的定义必须在调用前面(函数调用函数例外)

# -*- coding:utf-8 -*- #标准的先函数定义,后函数调用 def add1(a,b):     return a+b print add1(1,2) #函数2可以调用后面...
  • u011361880
  • u011361880
  • 2017年07月06日 17:07
  • 2974

Python函数的定义和调用

今天没事写写小程序,正好最近自学Python(看的是Learning Python 4th Edition),于是自己定义并实现了一个Python的小函数。最好的学习方式就是动手操作,感觉比看书强很多...
  • huhao_bupt
  • huhao_bupt
  • 2013年04月27日 13:45
  • 34144

如何调用自己写的python函数?

https://docs.python.org/2/library/functions.html#abs 假如我在notepad++里写了一个函数如下: def enroll(name, gender...
  • codeksy
  • codeksy
  • 2016年03月31日 10:31
  • 4557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中根据字符串调用函数
举报原因:
原因补充:

(最多只允许输入30个字)