我在使用python 2.7.13(x64)的Windows 7(x64)上。我正在尝试创建一个函数来显示模块中的函数。这是我试过的。
from __future__ import division, absolute_import, print_function
# from sys import argv
# import sys
import importlib
def see(module_here):
print("Functions in " + module_here + " module")
importlib.import_module(module_here)
a1 = dir(module_here)
for i,v in enumerate(a1):
print(str(i) + ") " + v)
see('sys')
我没有在sys模块中获得所需的"打印功能'。相反,它是与字符串' sys'相关联的打印功能。如果我使用see('this_does_not_exist')
,结果将是相同的。
如果有一些python用户/专家帮我修改代码,我将不胜感激。
答案 0 :(得分:4)
那是因为你打电话:
importlib.import_module(module_here)
但不对结果做任何事情。正确的代码应该是:
from __future__ import division, absolute_import, print_function
# from sys import argv
# import sys
import importlib
def see(module_here):
print("Functions in " + module_here + " module")
result = importlib.import_module(module_here)
a1 = dir(result)
for i,v in enumerate(a1):
print(str(i) + ") " + v)
see('sys')
请注意,这将打印sys
中的所有元素,而不仅仅是函数。您需要执行其他过滤才能仅打印功能。
您可以使用 - 如@Vincenzzzochi所说 - inspect.is_function
来检查它是否是一个函数:
from __future__ import division, absolute_import, print_function
# from sys import argv
# import sys
import importlib
import inspect
def see(module_here):
print("Functions in " + module_here + " module")
result = importlib.import_module(module_here)
a1 = dir(result)
for i,v in enumerate(f for f in a1 if inspect.isfunction(f)):
print(str(i) + ") " + v)
see('sys')