【发布时间】:2017-10-28 04:16:58
【问题描述】:
这些命令都不会检索函数的文档字符串并将其分配给变量。如何实现?
我尝试了各种各样的事情。其中之一是help 函数,但它似乎激活了整个程序,而不是返回字符串。我尝试了各种命令,但没有一个可以检索文档字符串。
import PIL
PILCommands=dir('PIL')
ListA=[]
ListB=[]
ListC=[]
ListD=[]
ListE=[]
LisfF=[]
ListG=[]
ListH=[]
for x in PILCommands:
print(x)
try:
ListA.append(x.__doc__)
except:
pass
try:
ListB.append(x.__doc__())
except:
pass
try:
ListC.append(str(x))
except:
pass
try:
ListD.append(help(x))
except:
pass
try:
ListE.append(eval("x.__doc__"))
except:
pass
try:
ListF.append(eval("inspect.getdoc(x)"))
except:
pass
try:
ListG.append(eval("dir(x)"))
except:
pass
try:
ListH.append(eval("PIL.x.__doc__"))
except:
pass
print
print("Command1: x.__doc__")
print(ListA)
print
print("Command1: x.__doc__()")
print(ListB)
print
print("Command1: str(x)")
print(ListC)
print
print("help(x)")
print(ListD)
print
print('Command1: eval("eval("x.__doc__")')
print(ListE)
print
print('Command1: eval("inspect.getdoc(x)")')
print(ListE)
print
print('Command1: eval("dir(x)")')
print(ListG)
print
print('Command1: eval("PIL.x.__doc__")')
print(ListG)
答案:
python << EOF
import inspect
import PIL
doc = inspect.getdoc(PIL)
print doc
print type(doc)
EOF
所以它没有文档。
【问题讨论】:
-
.__doc__可以正常工作,但x是一个字符串,是事物的 name,而不是事物本身。试试PIL[x].__doc__。 -
@jonrsharpe 模块不可下标,但
getattr应该可以正常工作。 -
@MSeifert 好点,谢谢
-
@user2564386 我删除了代码的“导入 PIL 失败”部分,因为它包含缩进错误并且与问题无关(请参阅 minimal reproducible example)。如果我不小心引入了错误 - 请随时再次编辑问题。 :)
-
Don’t use
except: pass。而且这些行中的大多数都不会引发异常,所以这只会增加不应该复杂的复杂性。
标签: python python-2.7 function module docstring