我正在使用 SQLAlchemy 并试图将函数group_by
导入解释器,但我似乎找不到它。有没有一种简单的方法可以搜索模块树以查看该函数所在的位置?
当然,我已经尝试过from sqlalchemy import + tab
手动搜索,但是在每个树级别都有太多选项需要检查。
我正在使用 SQLAlchemy 并试图将函数group_by
导入解释器,但我似乎找不到它。有没有一种简单的方法可以搜索模块树以查看该函数所在的位置?
当然,我已经尝试过from sqlalchemy import + tab
手动搜索,但是在每个树级别都有太多选项需要检查。
执行此操作的简单方法是跳出解释器并搜索文档。
同时,在我看来,没有这样的功能可以导入。有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
代替yield
ing:
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
尝试打印SQLAlchemy.__all__
,它将返回该模块中公开可用的所有功能的列表。