虽然使用help
来搜索大多数具有明确help(module.method)
排列方式的方法(例如help(list.extend)
)很简单,但我无法找出如何查找方法{{ 1}}在python的内置帮助功能中。
.readline()
属于哪个模块?如何在.readline
中搜索help
和相关方法?
此外,我还有什么方法可以使用解释器来确定方法将来属于哪个模块?
答案 0 :(得分:2)
不要尝试查找模块。创建所需类的实例,然后在该实例的方法上调用help,它将为您找到正确的帮助信息。示例:
>>> f = open('pathtosomefile')
>>> help(f.readline)
Help on built-in function readline:
readline(size=-1, /) method of _io.TextIOWrapper instance
Read until newline or EOF.
Returns an empty string if EOF is hit immediately.
在我的情况下(Python 3.7.1),它是在类型_io.TextIOWrapper
上定义的(公开公开为io.TextIOWrapper
,但help
不知道),但是记住了那种类型的东西不是很有帮助。知道如何通过内省您所关心的特定事物来弄清楚这一点,在更广泛的范围内适用。在这种特殊情况下,不要尝试猜测是非常重要的,因为open
函数可以返回几个不同的类,每个类具有不同的方法,具体取决于提供的参数,包括io.BufferedReader
,{{1} },io.BufferedWriter
和io.BufferedRandom
,每个都有自己的io.FileIO
方法版本(尽管为了一致性,它们都共享相似的接口)。
答案 1 :(得分:0)
摘自help(open)
的文本:
open() returns a file object whose type depends on the mode, and
through which the standard file operations such as reading and writing
are performed. When open() is used to open a file in a text mode ('w',
'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open
a file in a binary mode, the returned class varies: in read binary
mode, it returns a BufferedReader; in write binary and append binary
modes, it returns a BufferedWriter, and in read/write mode, it returns
a BufferedRandom.
另请参见python's io
module documentation on the class hierarchy.
因此,您正在查看TextIOWrapper
,BufferedReader
,BufferedWriter
或BufferedRandom
。这些都具有自己的类层次结构集,但是只要它们在某个时刻共享IOBase
超类就足够了,这就是在其中声明函数readline()
和readlines()
的地方。当然,每个子类在其特定模式下实现这些功能的方式都不同-如果您这样做
help(_io.TextIOWrapper.readline)
您应该获得所需的文档。
尤其是,您无法访问所需的readline
版本的文档,因为您不必费心找出它是哪个类。实际上,您也可以在 object 上调用help
。如果您正在使用特定的文件对象,则可以旋转一个终端,实例化它,然后将其传递给help()
,它将显示最接近表面的任何界面。示例:
x = open('some_file.txt', 'r')
help(x.readline)