我有一個實用程序模塊utils.py
,它使用requests來執行某些任務。在客戶端代碼(使用utils
)我需要處理由requests
拋出的異常,但我想避免隱式導入requests
(在客戶端,即)。我怎樣才能做到這一點?使用模塊中的異常而不明確導入
utils.py
是(簡體)
import requests
def download(url):
# stuff
return requests.get(url)
,我想client.py
是像
import utils # <-- no "import requests"
try:
utils.download(whatever)
except HTTPError: # <-- not "requests.exceptions.HTTPError"
do stuff
except utils.something
將工作太。這個名字不需要是全球性的。我只想避免在客戶端的任何地方提及requests
。
對於那些想知道的,這只是一個關注點分離的問題。 client.py
不應該在乎utils.download
的實現方式以及它使用的底層底層庫。
無論您執行多少個'import requests'語句,Python只會實際導入一次。你可以通過將'print'請求導入到模塊範圍的請求模塊中來驗證它,它只會被打印一次 –
所以,你的意思是導入所有utils.py而不導入utils.py(requests) ? – Jblasco
@Jblasco:我不希望單詞「requests」發生在client.py的任何地方 – georg