例如,如果您编写help(list)
,您将获得有关列表对象的帮助。如果你写help(+)
,你会得到SyntaxError: invalid syntax
这是为什么?
答案 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
因此,您可以将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 :(得分:0)
那是因为+是一个运算符,它会考虑两个操作数,你可以这样做:
help(1+1)
因为1 + 1返回一个int,求助会给你一些关于的信息 int数据类型