How to iterate through a module's functions
本问题已经有最佳答案,请猛点这里访问。
导入foo.py后,我有这个函数调用。foo有几个我需要调用的方法,例如foo.paint、foo.draw:
1 2 3 4 5 6 | import foo code if foo: getattr(foo, 'paint')() |
我需要使用while循环来调用和迭代所有函数foo.paint、foo.draw等。我该如何进行呢?
您可以这样使用
1 2 3 | for name, val in foo.__dict__.iteritems(): # iterate through every module's attributes if callable(val): # check if callable (normally functions) val() # call it |
但请注意,这将执行模块中的每个函数(可调用)。如果某个特定函数接收到任何参数,它将失败。
获得函数的一种更优雅(实用)的方法是:
1 | [f for _, f in foo.__dict__.iteritems() if callable(f)] |
例如,这将列出
1 2 3 4 5 6 7 | import math [name for name, val in math.__dict__.iteritems() if callable(val)] ['pow', 'fsum', 'cosh', 'ldexp', ...] |