我正在使用SQLAlchemy,並試圖將函數group_by
導入解釋器,但我似乎無法找到它。有沒有簡單的方法來搜索模塊樹來查看這個函數的位置?如何在Python模塊樹中查找函數?
當然,我試過from sqlalchemy import + tab
並手動搜索,但是在每個樹級都有太多選項需要檢查。
我正在使用SQLAlchemy,並試圖將函數group_by
導入解釋器,但我似乎無法找到它。有沒有簡單的方法來搜索模塊樹來查看這個函數的位置?如何在Python模塊樹中查找函數?
當然,我試過from sqlalchemy import + tab
並手動搜索,但是在每個樹級都有太多選項需要檢查。
做到這一點的簡單方法是走出解釋器,只是search the docs。
同時,它看起來對我來說,有是無此功能導入。有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__
這將返回該模塊中公開可用的所有功能的列表。
沒錯,這與'from sqlalchemy import + tab'幾乎完全一樣,只是沒有子模塊。 – jclancy
有一個具有相同類型主題的線程[http://stackoverflow.com/questions/139180/listing-all-functions-in-a-python-module] – abhishekgarg
呵呵。我可以發誓,我試圖用它作爲一種方法的陳述,它說沒有這樣的功能。這很好理解,但我仍然想回答模塊搜索問題。 – jclancy
是否有可能嘗試在錯誤類型的對象上使用它? – abarnert