python帮助('string')与help(list)不一致?

时间:2012-04-03 17:38:47

标签: python

当我在python解释器中键入help('string')时,我获得有关字符串类的信息。在那里,upper()被表示为一个函数。但我只能将其称为"hi".upper()而非upper("hi")的方法 因此可以假设任何方法都将被指示为内置模块的文档字符串中的函数。然而,当我执行help('list')时,列表类的方法在文档字符串中表示为方法!!
为什么会这样?只因为撰写教条的人不一致或者不同的人写了吗?或者这些方法(称为“函数”与文档字符串中称为“方法”的方法)实际上具有不同的属性?

5 个答案:

答案 0 :(得分:3)

当您搜索help('string')时,您正在寻找 string模块的文档字符串。如果您执行help(str)help('str'),您将获得str类型的文字字符串,此处显示upper作为方法!

正如您在此处所见,upper模块中的函数string实际上是一个函数,而不是一个方法:

>>> upper('hi')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'upper' is not defined
>>> 'hi'.upper() # method from the str type
'HI'
>>> from string import upper
>>> upper('hi') # function from the string module
'HI'

答案 1 :(得分:2)

您的意思是help('str'),而不是help('string')str是一种类型,string是一个提供处理字符串函数的模块。

答案 2 :(得分:1)

您正在创建该对象的实例,然后在该实例上调用帮助。

所以这些都有效:

help(1)
help({})
help([])
help('')
help(dir)
help(help)

帮助抓取该实例的文档字符串,并将其返回给您。 当您创建自己的对象时,您可以输入有用的文档字符串或任何您想要的内容。

答案 3 :(得分:1)

你所看到的并没有错。

>>> help('string')

将显示string模块文档。看起来里面有一个upper函数:

>>> import string
>>> string.upper('hello')
'hello'

我会说这个upper与你所做的相同:

>>> 'hello'.upper()

但我不确定。

请注意,字符串''str类型,而不是string类型。这意味着您可能正在寻找:

>>> help('str')

在这里你也会看到str.upper方法。

答案 4 :(得分:0)

这是因为'string'string'list'

也是如此

要获得lists的类似结果,请尝试help([])