Python 创建一个将模块作为字符串并显示其中所有函数的函数
我在Windows7(x64)上使用Python2.7.13(x64)。我试图创建一个函数来显示模块中的函数。这是我试过的Python 创建一个将模块作为字符串并显示其中所有函数的函数,python,Python,我在Windows7(x64)上使用Python2.7.13(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 + " mod
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”关联的函数。如果我使用请参见(“此函数不存在”)
,结果将是相同的
如果有python用户/专家帮助我更正代码,我将不胜感激。这是因为您调用:
importlib.import_module(module_here)
但不要对结果进行任何操作。正确的代码应为:
来自uuuu未来uuuu导入部门、绝对导入、打印功能
#从系统导入argv
#导入系统
导入导入库
def见(此处为模块_):
打印(“模块+模块+模块中的功能”)
结果=导入lib.import\u模块(此处为模块)
a1=方向(结果)
对于枚举(a1)中的i,v:
打印(str(i)+“v”)
请参阅('sys')
但是请注意,这将打印sys
中的所有元素,而不仅仅是函数。您需要执行额外的筛选以仅打印函数
正如@Vincenzzochi所说,您可以使用检查它是否是一个函数:
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')
来自uuuu未来uuuu导入部门、绝对导入、打印功能
#从系统导入argv
#导入系统
导入导入库
进口检验
def见(此处为模块_):
打印(“模块+模块+模块中的功能”)
结果=导入lib.import\u模块(此处为模块)
a1=方向(结果)
对于枚举中的i,v(如果inspect.isfunction(f))中的f表示a1中的f):
打印(str(i)+“v”)
请参阅('sys')
OP可以使用inspect模块通过im_func
描述符获取特定的函数,或者使用isfunction()
函数::@Vincenzzochi:谢谢你的建议。事实上,也可以使用inspect.is_function
方法。我会更新答案。(Willem,要启用语法突出显示,结合使用粗体,请使用
。请参阅)@RadLexus:非常感谢。编辑后,我已经检查了标记源代码。+1.另外,inspect.getmembers(module,inspect.isfunction)
返回的元组列表(function\u name,function\u obj)
,以防任何阅读本文的人需要这样的东西