4

我正在使用 SQLAlchemy 并试图将函数group_by导入解释器,但我似乎找不到它。有没有一种简单的方法可以搜索模块树以查看该函数所在的位置?

当然,我已经尝试过from sqlalchemy import + tab手动搜索,但是在每个树级别都有太多选项需要检查。

4

2 回答 2

3

执行此操作的简单方法是跳出解释器并搜索文档


同时,在我看来,没有这样功能可以导入。有group_by 方法sqlalchemy.orm.query.Query对象sqlalchemy.sql.expression.[Compound]Select[Base]


但是,如果您真的想递归地遍历包中的所有模块以查找名称,那么您可以这样做:

import inspect

def find_name(package, name):
    if hasattr(package, name):
        yield package
    for modulename, submodule in inspect.getmembers(package, inspect.ismodule):
        yield from find_name(submodule, name)

对于 Python 3.2 或更早版本,您需要将 替换yield from为循环:

for modulename, submodule in inspect.getmembers(package, inspect.ismodule):
    for result in find_name(submodule, name):
        yield result

如果你只想要第一个结果,而不是所有结果,你可以return代替yielding:

def find_name(package, name):
    if hasattr(package, name):
        return package
    for modulename, submodule in inspect.getmembers(package, inspect.ismodule):
        result = find_name(submodule, name)
        if result:
            return result
于 2013-05-17T20:30:09.770 回答
0

尝试打印SQLAlchemy.__all__,它将返回该模块中公开可用的所有功能的列表。

于 2013-05-17T20:23:20.290 回答