现在我想构建一个函数get_doc(),它可以获得模块的 doc 这是代码
def get_doc(module):
exec "import module"
print module.__doc__
返回的信息:
Traceback (most recent call last):
File "<pyshell#36>", line 1, in <module>
get_doc(sys)
NameError: name 'sys' is not defined
答案 0 :(得分:3)
问题是您导入的是"module"
而不是指定的模块,并且您没有将名称module
放在任何位置。对此的一个愚蠢的解决方法是始终使用exec
def get_doc(module):
exec "import {}".format(module)
exec "print {}.__doc__".format(module)"
但我会建议您使用exec
函数代替__import__
:
def get_doc(module):
module = __import__(module)
print module.__doc__
这允许更多的灵活性,您可以根据需要修改,使用模块。
答案 1 :(得分:2)
当你说
时get_doc(sys)
python将无法识别sys
。做你想做的事的实际方法是
使用__import__
函数加载模块,就像这样
def get_doc(module):
mod = __import__(module)
print mod.__doc__
get_doc("sys")
注意:我不赞成在程序中执行动态代码,但如果必须使用exec
来解决此问题,请阅读this并对此有基本了解安全问题,然后看看aIKid的解决方案。