如何遍历模块的功能
导入foo.py之后,我有此函数调用。Foo有几种我需要调用的方法,例如foo.paint,foo.draw:
import foo
code
if foo:
getattr(foo, 'paint')()
我需要使用while循环来调用和遍历所有函数foo.paint,foo.draw等。我该如何处理?
-
您可以这样使用
foo.__dict__
:for name, val in foo.__dict__.iteritems(): # iterate through every module's attributes if callable(val): # check if callable (normally functions) val() # call it
但是请注意,这将执行模块中的每个函数(可调用)。如果某些特定的函数收到任何参数,它将失败。
一种更优雅的(函数式)获取函数的方式是:
[f for _, f in foo.__dict__.iteritems() if callable(f)]
例如,这将列出
math
方法中的所有功能:import math [name for name, val in math.__dict__.iteritems() if callable(val)] ['pow', 'fsum', 'cosh', 'ldexp', ...]