爲了說明我的問題,這裏不使用contextlib
一個基本要求:使用contextlib
相同的請求使用urllib.request.urlopen進行請求時,使用contextlib.closing有什麼優勢嗎?
import urllib.request
url = "http://www.example.com/"
with urllib.request.urlopen(url) as response:
raw_data = response.read()
和:
import contextlib
import urllib.request
url = "http://www.example.com/"
with contextlib.closing(urllib.request.urlopen(url)) as response:
raw_data = response.read()
據我可以告訴這兩個請求,有結果相同:數據被檢索,請求在代碼塊完成後自動關閉,即使在請求關閉後也可以訪問raw_data
。當使用urllib.request.urlopen
提出請求時,那麼使用contextlib.closing
還是有多餘的優勢?一種方法是Pythonic和/或更常見嗎?
感謝您的快速和明確的迴應。在提問之前,我會更詳細地閱讀文檔。 –