这个问题已经有了答案:
How to list all functions in a Python module?
14个答案
导入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',
...]