gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:31:04 25 4
gpt4 key购买 nike

我在 Windows 7 (x64) 上使用 python 2.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”关联的函数。如果我使用 see(' this_does_not_exist').

如果有 python 用户/专家帮助我更正代码,我将不胜感激。

最佳答案

那是因为你调用了:

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")
<b>result = </b>importlib.import_module(module_here)
a1 = dir(<b>result</b>)
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
<b>import inspect</b>

def see(module_here):
print("Functions in " + module_here + " module")
result = importlib.import_module(module_here)
a1 = dir(result)
for i,v in enumerate(<b>f for f in a1 if inspect.isfunction(f)</b>):
print(str(i) + ") " + v)
see('sys')

关于python - 创建一个函数,将模块作为字符串并显示其中的所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com