在Python dir()
中返回当前本地范围内的名称列表。
__doc__
返回对象的完整文档字符串。
如何列出当前本地范围内的所有名称并打印每个项目的文档字符串的第一行?
详细说明:对于import numpy as np
,我想获得dir(np)
返回的所有姓名的简短说明列表,例如: print(np.nonzero.__doc__.split('.', 1)[0])
。
我该怎么做?
答案 0 :(得分:5)
def print_members(obj):
for key in dir(obj):
value = getattr(obj, key)
doc = (value.__doc__ or '').split('.', 1)[0]
print('MEMBER: %s\nDOCSTRING: %s\n\n' % (key, doc))
答案 1 :(得分:0)
我使用过类似的东西。它与您的相似但不完全相同。您可以根据需要调整文档字符串输出。
###############################################################################
def about(obj=None, text=None, capsOnly=False, noLeadingUnderScores=False):
"""
Utility function to assist with discovery while playing in the Python
shell. When possible, returns the sorted dir() and values() of the
specified object.
* noLeadingUnderScores - toggles display filtering of items that have a
leading underscore; only applies to dir() not
values() items.
* capsOnly - toggles display filtering of items that are uppercase only.
this only applies to dir() not values() items.
* text - toggles the display filtering of items that have 'text'
within their string; applies to both dir() and values() items.
"""
print "\n*******************\n* print __obj__ *\n*******************\n"
if obj is None:
print "about() is meaningless as 'obj' is None"
else:
# diplay help(), if possible
try:
if obj.__doc__:
print "\n\n********************\n* HELP() results *\n********************\n"
for x in obj.__doc__.split('\n'):
print x
except:
print "\nno __obj__ available"
# display dir(), if possible
print "\n\n*******************\n* DIR() results *\n*******************\n"
for x in sorted(dir(obj)):
temp = "%s" % x
if noLeadingUnderScores and len(temp) > 0 and temp[0] == "_":
continue
elif capsOnly:
if temp == temp.upper():
if text and text in temp:
print temp
else:
continue
elif text:
if text in temp:
print temp
else:
print temp
# display values(), is possible
try:
if obj.values and type(obj.values) == type({}):
print "\n\n**********************\n* DICT values(k,v) *\n**********************\n"
for x in sorted(obj.values.keys()):
if text:
if text in x or text in str(obj.values[x]):
print x, obj.values[x]
else:
print x, obj.values[x]
except:
print "\nno dictionary like obj.values available"