为什么Python中的Help()函数对任何输入都无效
比如说,如果你输入 help(list)
,你会得到关于列表对象的帮助信息。但是如果你输入 help(+)
,你会看到 SyntaxError: invalid syntax
这样的错误提示。为什么会这样呢?
4 个回答
1
在一些编程语言中,你可以把运算符当作值来传递,比如直接使用(例如,+
在Lisp中是一个普通的函数)或者用特殊的语法(例如,(+)
在Haskell中表示+
运算符作为普通函数)。但在Python中,这种情况并不存在。
当然,+
运算符可以作为表达式的一部分,比如给它两个操作数(2+3
)或者一个操作数(+3
),但是你无法直接获取+
运算符本身的值。(部分原因是+
实际上有三种不同的运算符——一元加法、二元加法和二元连接,所以没有“+
运算符的值”这种说法,除非有上下文。不过即使是那些不模糊的运算符也是如此。)
这和类型及函数是不同的,正如你所看到的:
>>> list
builtins.list
>>> abs
<function builtins.abs>
>>> +
SyntaxError: invalid syntax
所以,你可以把list
或abs
作为参数传递给一个函数——包括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('+')
来获取关于 +
运算符的帮助。