How to call every function in an imported python module
我编写了一个程序,它创建和维护一个数组,我编写了另一个模块,它具有操作数组的功能。是否可以调用导入模块中的每个函数而不必对每个函数调用进行硬编码?意思是这样的:
1 2 3 4 5 | #Some way I don't know of to get a list of function objects listOfFunctions = module.getAllFunctions() for function in listOfFunctions: array.function() |
我希望这样做,这样我就不必每次向操纵模块添加函数时都更新主文件。
我发现了这些:
如何从python目录中的每个模块调用函数?
是否可以列出模块中的所有功能?
列出python模块中的所有函数
而且也只能在python文档的模块中列出函数。我可以用一些字符串操作和
导入模块时,
1 2 | listOfFunctions = [f for f in my_module.__dict__.values() if hasattr(f,'__call__')] |
然后,我们可以通过调用
1 2 | for f in listOfFunctions: f.__call__() |
但是要小心!这本词典没有保证的顺序。函数将以某种随机顺序调用。如果顺序很重要,您可能希望使用强制执行此顺序的命名方案(fun01-do-u-something、fun02-do-u-something等),并首先对字典的键进行排序。
我想你想做这样的事情:
1 2 3 4 5 6 7 8 | import inspect listOfFunctions = [func_name for func_name, func in module.__dict__.iteritems()\ if inspect.isfunction(func)] for func_name in listOfFunctions: array_func = getattr(array, func_name) array_func() |