如何在模块中搜索函数/类?

时间:2013-09-20 07:28:53

标签: python module dir

我想知道函数/类是否存在于模块中的某个位置。 我知道如何使用dir()生成模块上层/层次结构中所有类/函数的列表 例如,假设我想知道now()模块中是否存在函数datetime

import datetime
dir(datetime)

但是这并没有列出函数now(),因为now()包含在更深层次中(准确地说是datetime.datetime)。如何检查now()是否存在? 或者也许有一种方法可以列出所有级别的所有内容?

1 个答案:

答案 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')