每当查看Python的API库时,似乎只有一半的人只使用:
response = urllib2.urlopen('https://www.example.com/api', data)
大约一半使用:
connection = httplib.HTTPSConnection('www.example.com/api')
# ... rest omitted for simplicity
我倾向于认为第二个版本“更酷”(我倾向于对大多数事情采用更为面向对象的方法)。
使用一个优于另一个是否有益处或理由。或者,我在路上遗漏了什么。我怀疑urllib2.urlopen
在其实现中使用了HTTPSConnection
,因此可能只有一个代表我的代码更少。无论哪种方式,我都喜欢一些反馈。感谢。
答案 0 :(得分:4)
是的,urllib2
在其实现中使用HTTPSConnection
(或适用于协议的任何类型的连接)。它基本上只是人们使用httplib
做最常见事情的捷径。
urllib2
还有一些代码可以处理重定向和身份验证请求等内容,如果您使用普通httplib
进行操作,则可能需要手动编码。
编辑:回应迈克尔的评论,如果你想知道对象与数据......那有点取决于你将要用它做什么。如果你需要连接对象(例如对它做一些特殊的事情,可能是一个keepalive连接),那么请确保继续使用httplib
方式并返回连接对象。但是,如果您只是想获取数据,只需获取数据并将其返回即可。如果您喜欢OOP,请知道Python中的所有内容在技术上都是一个对象;你从urllib2.urlopen
获得的是一个类似文件的对象,它有一些方法可以将其值作为字符串对象或行列表(也是字符串对象)检索。我认为大多数Python程序员会认为在后一种情况下使用httplib
会浪费精力。