为了说明我的问题,这是一个不使用的基本请求contextlib
:
import urllib.request
url = "http://www.example.com/"
with urllib.request.urlopen(url) as response:
raw_data = response.read()
并且使用相同的请求contextlib
:
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 和/或更常见?