【问题标题】:Why Help() function in Python does not work with any input [closed]为什么 Python 中的 Help() 函数不适用于任何输入[关闭]
【发布时间】:2013-02-13 20:34:52
【问题描述】:

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

【问题讨论】:

  • 即使是人类也无法处理所有输入,你怎么能指望计算机来管理?

标签: python helper


【解决方案1】:

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

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

【讨论】:

  • 好吧,help('+') 不会很有用,因为+ 只是一个字符串,所以你会在str 类上获得帮助,而不是加法运算符。
  • 试试看 :),Python 就是这么酷 :)
  • @JasonSperske:哇,你是对的。
  • +1。这个答案中唯一缺少的是某种解释,即运算符(不像函数)不是 Python 中的有效对象或表达式(这就是我们需要 operators 模块的原因,因为没有办法“通过+ 运算符”或“将或运算符”传递给函数)。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    在某些语言中,您实际上可以直接将运算符作为值传递(例如,+ 是 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 的答案,了解您真正想要的内容。

    【讨论】:

      【解决方案4】:

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

      help(1+1)
      

      因为 1+1 返回一个 int,所以 help 会给你一些关于 int 数据类型

      【讨论】:

      • 这不是很有用。 (另外,如果+ 总是需要两个操作数,为什么+3 不是错误?)
      • @abarnert 不会是 +3 整数文字?
      • 没有。试试这个:print(ast.parse('+3').body[0].value)。这是一个UnaryOpUAdd 用于op 和一个Num,其值为3 用于operand。有关详细信息,请参阅文档中的 Unary arithmetic and bitwise operations
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 2019-10-12
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 2020-09-26
      • 2021-03-31
      相关资源
      最近更新 更多