Python中用字符串调用函数或方法言传身教代码,python示例代码

Linux and
python学习交换一,二群已满.

Python中用字符串调用函数或艺术言传身教代码,python示例代码

前言

本文主要给我们介绍了有关Python用字符串调用函数或方式的连带内容,分享出来供大家参考学习,上面来共同看看详细的牵线:

先看一个例子:

>>> def foo():
    print "foo"

>>> def bar():
    print "bar"

>>> func_list = ["foo","bar"]
>>> for func in func_list:
    func()
TypeError: 'str' object is not callable

咱俩期望遍历执行列表中的函数,不过从列表中收获的函数名是字符串,所以会唤起类型错误,字符串对象是不能调用的。尽管大家想要字符串变成可调用的靶子啊?或是想通过变量调用模块的习性和类的脾性呢?

以下有三种方法能够完结。

eval()

>>> for func in func_list:
    eval(func)()
foo
bar

eval()
平日用来实施一个字符串表明式,并回到表达式的值。在那里它将字符串转换来对应的函数。eval()
效率强大可是比较危险(eval is evil),不建议采取。

locals()和globals()

>>> for func in func_list:
    locals()[func]()
foo
bar

>>> for func in func_list:
    globals()[func]()
foo
bar

locals() 和 globals()
是python的五个放置函数,通过它们得以一字典的艺术访问片段和全局变量。

getattr()

getattr() 是 python 的内建函数,getattr(object,name) 就相当于object.name,不过此间 name 可以为变量。

返回 foo 模块的 bar 方法

>>> import foo
>>> getattr(foo, 'bar')() 

回去 Foo 类的性能

>>> class Foo:
  def do_foo(self):
    ...

  def do_bar(self):
    ...

>>> f = getattr(foo_instance, 'do_' + opname)
>>> f()

总结

上述正是那篇作品的全体内容了,希望本文的内容对大家的就学大概工作能带来一定的帮带,假若有疑点大家能够留言调换,感激大家对帮客之家的协助。

参考

Calling a function of a module from a string with the function’s name in
Python

How do I use strings to call functions/methods?

前言
本文首要给大家介绍了关于Python用字符串调用函数或艺术的相关内容,分享…

Linux and
python学习调换叁群新开,欢迎加入,壹起学习.qq 三群:5632278玖四

举个栗子:

运行结果:

不前进,不倒退,结束的事态是尚未的.

 

 

联合前行,与君共勉,

 getattr(pyMethod(),'out%s'%str)()  注意pyMethod()和最后的()   这里之所以这么写pyMethod()加括号是实例化类对象,最后的括号,因为getattr函数反射后,是一个方法对象。

相关文章