如何确定课程中可用的方法?
示例:
我正在尝试了解urllib.request。我在文档中找到了urlopen():
http://docs.python.org/3.0/library/urllib.request.html
所以我有:
response = urllib.request.urlopen(url)
这是什么回报?我知道它可能是一个对象,但这个对象方法是什么?最后我得到了一些例子(卡在页面底部远离引入想法的地方)并发现了read(),但我不得不在文档外查找.decode(),最后让你做的是这个图书馆的整个目的是。
我在docs.python.org页面中遇到了这类问题。是否有更好的文档在其他地方,或者我是否会以错误的方式学习这个?
答案 0 :(得分:5)
这里真正的问题是你使用的是非常旧版本的文档。我不知道你是如何找到它的,但是从URL http://docs.python.org/3.0/library/urllib.request.html和页面顶部的标题(“Python v3.0.1文档”)中应该非常清楚,等等你是没有查看您的版本的文档。*
如果您正在查看the 3.3 documentation,您会看到:
对于http和https网址,此函数返回http.client.HTTPResponse对象,该对象具有以下HTTPResponse Objects方法。
第一个链接将您带到精确类的引用,第二个链接将引用为抽象类型的引用。它可以为您提供您正在寻找的内容 - read
方法以及其他所有内容。
在旧版本的Python中,术语“类文件对象”被松散地抛出。这总是一个模糊的术语(有时它意味着“可迭代的行”,“有read()
和/或write()
酌情”,“有一个fileno()
”,......),并且在Python 3中变得更加如此(因为你必须将二进制文件与文本文件区分开来)。因此,多年来,他们已经逐步取消了更具体的文档。但是,如果您正在查看最早的Python 3文档,那么您将无法获益。
*请注意,如果您访问任何最近版本的文档,例如上面链接的3.3,则标题中会有一个下拉菜单,如果您发现了错误的版本,则可以切换到其他版本。并且,默认值将始终为2.7或最新稳定的3.x,这些也是最常见的搜索结果,也是最容易链接的内容,因此除非您真的尝试为自己努力。如果您确实发现自己喜欢3.0或2.4之类的古老文档,您通常只需将网址编辑为3.3
或2.7
,或仅3
或2
;如果没有,快速搜索应该有效。
答案 1 :(得分:4)
urlopen
文档中的关键词是:
此函数返回一个类似文件的对象,其中包含urllib.response模块
中的两个附加方法
这是一个类文件对象这一事实表明所有正常的文件操作函数(read
,close
)也适用于返回的对象。
答案 2 :(得分:4)
您链接的文件说明了这一点:
此函数返回一个类文件对象,其中包含两个方法 来自urllib.response模块
geturl() — return the URL of the resource retrieved, commonly used to determine if a redirect was followed info() — return the meta-information of the page, such as headers, in the form of an http.client.HTTPMessage instance (see Quick Reference to HTTP Headers)
强调我的。 “类似文件的对象”是defined as follows:
文件对象
将面向文件的API(使用read()或write()等方法)暴露给底层资源的对象。根据创建方式,文件对象可以调解对真实磁盘文件或其他类型存储或通信设备的访问(例如标准输入/输出,内存缓冲区,套接字,管道等) 。文件对象也称为类文件对象或流。
正如@abarnert指出的那样,你可能最好使用明确链接到new docs的methods of the returned object。
答案 3 :(得分:3)
如果你没有使用Ipython,那么你应该这样做。然后你可以输入urllib。然后按Tab键查看所有可用选项,并对其返回的内容执行相同操作。如果您在功能之后键入一个问号,它将显示文档,两个问号通常会显示源。
虽然它的价值虽然我总是发现在线文档非常有帮助。它确实说urllib.request.urlopen将在解释的早期返回像object这样的文件