为什么Python中的Help()函数不适用于任何输入

时间:2013-02-13 20:34:52

标签: python helper

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

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

+运算符当然可以是表达式的 part ,只需给它两个操作数(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 :(得分:0)

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

help(1+1)

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