为什么Python中的Help()函数对任何输入都无效

-1 投票
4 回答
3039 浏览
提问于 2025-04-17 15:48

比如说,如果你输入 help(list),你会得到关于列表对象的帮助信息。但是如果你输入 help(+),你会看到 SyntaxError: invalid syntax 这样的错误提示。为什么会这样呢?

4 个回答

1

在一些编程语言中,你可以把运算符当作值来传递,比如直接使用(例如,+在Lisp中是一个普通的函数)或者用特殊的语法(例如,(+)在Haskell中表示+运算符作为普通函数)。但在Python中,这种情况并不存在。

当然,+运算符可以作为表达式的一部分,比如给它两个操作数(2+3)或者一个操作数(+3),但是你无法直接获取+运算符本身的值。(部分原因是+实际上有三种不同的运算符——一元加法、二元加法和二元连接,所以没有“+运算符的值”这种说法,除非有上下文。不过即使是那些不模糊的运算符也是如此。)

这和类型及函数是不同的,正如你所看到的:

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

所以,你可以把listabs作为参数传递给一个函数——包括help——但你不能这样做+

这就是为什么Python有一个operator模块,它可以让你把“运算符当作函数”来传递:

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

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

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

谢谢……

幸运的是,help函数有特殊的代码来处理字符串。想要的内容可以参考nneonneo的回答。

3

这是因为 help 只是一个函数 - 它的参数必须是一个语法上有效的表达式,并且能够计算出一个值。

6

help 是一个普通的函数,所以它可以像其他函数一样接收参数。比如说,help(list) 这样的写法是正确的,它把 list 类型传给了 help

不过,help(+) 这样的写法是不合法的,因为 + 是一个运算符,而不是一个独立的表达式。在这种情况下,你可以用 help('+') 来获取关于 + 运算符的帮助。

撰写回答