Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建一个将模块作为字符串并显示其中所有函数的函数_Python - Fatal编程技术网

Python 创建一个将模块作为字符串并显示其中所有函数的函数

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

我在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 + " 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)
,以防任何阅读本文的人需要这样的东西