我想知道函数/类是否存在于模块中的某个位置。
我知道如何使用dir()
生成模块上层/层次结构中所有类/函数的列表
例如,假设我想知道now()
模块中是否存在函数datetime
:
import datetime
dir(datetime)
但是这并没有列出函数now()
,因为now()
包含在更深层次中(准确地说是datetime.datetime
)。如何检查now()
是否存在?
或者也许有一种方法可以列出所有级别的所有内容?
答案 0 :(得分:1)
这段代码递归地列出了模块的内容。但请注意,如果两个子模块/对象/ ...共享同一个名称
,它将失败import time
import datetime
pool=[] # to avoid loops
def recdir(d,n=''):
children_all=dir(d)
children=[c for c in children_all if c[0]!='_' and not c in pool]
for child in children:
pool.append(child)
full_name=n+"."+child
print "Found: ","'"+full_name+"' type=",eval("type("+full_name+")")
string="recdir(d."+child+",'"+full_name+"')"
print "Evaluating :",string
time.sleep(0.2)
eval(string)
recdir(datetime,'datetime')