-1

例如,如果您 write help(list),您将获得有关列表对象的帮助。如果你写help(+),你会得到SyntaxError: invalid syntax 这是为什么?

4

4 回答 4

6

help是一个普通函数,所以它像任何其他函数一样接受参数。help(list)是有效的语法:它将list类型传递给help.

然而,help(+)是非法的语法(+ 是一个运算符,而不是一个表达式本身)。在这种情况下,您可以使用help('+')来获取+操作员的帮助。

于 2013-02-13T20:36:28.497 回答
3

这是因为help它只是一个函数——它的参数必须是一个语法上有效的表达式,它的计算结果是一个值。

于 2013-02-13T20:36:15.490 回答
1

在某些语言中,您实际上可以直接将运算符作为值传递(例如,+是 Lisp 中的普通函数)或使用特殊语法(例如,(+)+运算符作为 Haskell 中的普通函数)。但在 Python 中并非如此。

+运算符当然可以通过给它两个操作数 ( ) 或一个 ( )来成为表达式的一部分但是没有办法访问运算符本身的值。(部分原因是因为实际上是三个不同的运算符——一元加法、二元加法和二元连接,所以没有上下文就连“运算符的值”这样的东西都没有。但即使对于这样的运算符也是如此没有歧义。)2+3+3+++

这与类型和函数不同,如您所见:

>>> list
builtins.list
>>> abs
<function builtins.abs>
>>> +
SyntaxError: invalid syntax

所以,你可以将listorabs作为参数传递给一个函数——包括help——但你不能用+.

这就是 Python 具有该operator模块的原因,它可以为您提供可以传递的“操作符作为函数”:

>>> import operator
>>> operator.add
<function operator.add>

但这在这种情况下并不是特别有用:

>>> help(operator.add)
add(...)
    add(a, b) -- Same as a + b.

谢谢……</p>

幸运的是,该help函数具有处理字符串的特殊代码。请参阅 nneonneo 的答案,了解您真正想要的内容。

于 2013-02-13T20:47:26.807 回答
0

那是因为 + 是一个运算符,它包含两个操作数,你可以这样做:

help(1+1)

因为 1+1 返回一个 int,所以 help 会给你一些关于 int 数据类型的信息

于 2013-02-13T20:43:46.643 回答