为什么Python中的Help()函数不能处理任何输入

为什么Python中的Help()函数不能处理任何输入,python,helper,Python,Helper,例如,如果您编写帮助(list),您将获得有关list对象的帮助。如果您编写help(+),您将得到SyntaxError:invalid syntax 这是为什么?这是因为它只是一个函数-它的参数必须是一个语法上有效的表达式,其计算结果为一个值。help是一个普通函数,因此它与任何其他函数一样接受参数帮助(列表)是有效语法:它将列表类型传递给帮助 但是,help(+)是非法语法(+是运算符,而不是表达式本身)。在这种情况下,您可以使用帮助(“+”)来获取有关+运算符的帮助。这是因为+是一个运算

例如,如果您编写
帮助(list)
,您将获得有关list对象的帮助。如果您编写
help(+)
,您将得到
SyntaxError:invalid syntax

这是为什么?

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

help
是一个普通函数,因此它与任何其他函数一样接受参数<代码>帮助(列表)是有效语法:它将
列表
类型传递给
帮助


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

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

help(1+1)
由于1+1返回一个int,因此帮助将为您提供有关
int数据类型在某些语言中,您实际上可以直接(例如,
+
在Lisp中是一个普通函数)或使用特殊语法(例如,
(+)
在Haskell中是作为普通函数的
+
运算符)将运算符作为值传递。但在Python中并非如此

+
运算符当然可以是表达式的一部分,只需给它两个操作数(
2+3
)或一个操作数(
+3
),但无法访问
+
运算符本身的值。(部分原因是因为
+
实际上是三个不同的运算符,一元加法、二元加法和二元concat,所以甚至没有“无上下文的
+
运算符的值”这样的东西。但即使对于不含糊的运算符也是如此。)

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

>>> list
builtins.list
>>> abs
<function builtins.abs>
>>> +
SyntaxError: invalid syntax
但这在这种情况下并不特别有用:

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


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

即使人类也不能处理所有输入,您如何期望计算机进行管理?嗯,
帮助(“+”)
不会很有用,因为
+
只是一个字符串,所以您将获得
str
类的帮助,而不是加法运算符。试试看:),巨蟒很酷:)@JasonSperske:哇,你说得对。这个答案中唯一缺少的是某种解释,即运算符(与函数不同)在Python中不是有效的对象或表达式(这就是为什么我们需要
运算符
模块,因为没有办法“传递+运算符”或“传递或运算符”给函数)。这不是很有用。(另外,如果
+
总是需要两个操作数,为什么
+3
不是一个错误?@abarnert不会是一个整数文本?否。请尝试以下操作:
打印(ast.parse('+3').body[0].value)
。它是一个
UnaryOp
,对于
op
具有
UAdd
,对于
操作数
具有值
3
Num
。有关详细信息,请参见文档中的。
>>> help(operator.add)
add(...)
    add(a, b) -- Same as a + b.