【问题标题】:How can I create my own "hint" when calling a function in IDLE?在 IDLE 中调用函数时如何创建自己的“提示”?
【发布时间】:2017-07-08 01:50:51
【问题描述】:

我知道我的问题可能令人困惑,很难问一些你不知道它到底是什么的东西(我将称之为 'hint'),所以对此我深表歉意.话虽如此,这就是我的意思(白框中的文字):

我的问题是:

  • 如何在调用函数时制作自己的提示(并自定义)文本?
  • 究竟是什么?
  • 本例中的文字是什么意思?

【问题讨论】:

  • 那个“提示”正在向您显示sum 的参数。我认为最接近你自己提示的是defing 一个函数tmp(x, y, z):,然后看看你在输入>>> tmp( 时是否得到一个“提示”......
  • 我忘了说我还想自定义它,甚至在函数提示中添加它的功能或其他内容。不过还是感谢您的帮助!
  • 这可能是不可能的。这不是 Python 语言的特性,而是您用来编辑代码的 IDE。
  • 你在编辑中添加的那部分,你能把它移到一个单独的答案吗?

标签: python function python-idle


【解决方案1】:

IDLE 将弹出窗口称为“calltip”。对于在 python 代码中使用 def 语句定义的模块,它在第一行显示签名,在第二行显示文档字符串的第一行。它们适用于使用括号调用的任何类型的可调用对象。

如果您键入“(”,除非您快速键入,否则该框会弹出。在它关闭后,要将其恢复,请将光标定位在“(”和“)”之间,然后选择顶部菜单上的编辑和“显示通话提示',或键入菜单上显示的快捷键。更多信息,see the doc.

【讨论】:

    【解决方案2】:

    供将来参考:

    • 如何在调用函数时自己提示 [...]?

    首先,有两种我称之为“提示”的类型:

    4.7.6. Documentation Strings:
    以下是关于文档字符串的内容和格式的一些约定。

    第一行应始终是对象用途的简短摘要。 [...] 此行应以大写字母开头并以句点结尾。

    如果文档字符串中有更多行,则第二行应为空白,从视觉上将摘要与描述的其余部分分开。以下几行应该是描述对象的调用约定、其副作用等的一个或多个段落。[...]

    这是一个多行文档字符串的示例:

    >>> def my_function():
    ...     """Do nothing, but document it.
    ...
    ...     No, really, it doesn't do anything.
    ...     """
    ...     pass
    ...
    >>> print(my_function.__doc__)
    Do nothing, but document it.
    
        No, really, it doesn't do anything.
    

    还有introduced in Python 3.0

    4.7.7. Function Annotations: 函数注释是关于所用类型的完全可选的元数据信息 通过用户定义的函数(有关详细信息,请参阅 PEP 3107 和 PEP 484)。

    注释作为字典存储在函数的 annotations 属性中,对函数的任何其他部分没有影响。参数注释由参数名称后的冒号定义,后跟计算注释值的表达式。返回注释由文字 -> 定义,后跟表达式,位于参数列表和表示 def 语句结尾的冒号之间。以下示例有一个位置参数、一个关键字参数和带注释的返回值:

    >>> def f(ham: str, eggs: str = 'eggs') -> str:
    ...     print("Annotations:", f.__annotations__)
    ...     print("Arguments:", ham, eggs)
    ...     return ham + ' and ' + eggs
    ...
    >>> f('spam')
    Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
    Arguments: spam eggs
    'spam and eggs'
    

    • 究竟是什么?

    上面写的和Terry Jan Reedy的回答:

    IDLE 将弹出窗口称为“calltip”。对于在 python 代码中使用 def 语句定义的模块,它在第一行显示签名,在第二行显示文档字符串的第一行。它们适用于使用括号调用的任何类型的可调用对象。

    如果您键入“(”,除非您快速键入,否则该框会弹出。在它关闭后,要将其恢复,请将光标定位在“(”和“)”之间,然后选择顶部菜单上的编辑和“显示呼叫提示',或键入菜单上显示的快捷键。更多信息,see the doc


    • 本例中的文字是什么意思?

    可悲的是,因为我现在并没有按照自己的方式工作,而且我从来不需要理解它,所以我还没有找到每个 calltip 的语法是什么。

    【讨论】:

      【解决方案3】:

      实际上,您对被称为提示的文本框是正确的,因此不需要引用。您看到的是类型提示。它由 Python 中的 typing 模块支持。参考下面的例子:

      def add(a: int, b: int) -> int:
          return a + b
      

      然后,当您尝试调用该函数时,您将看到一个与您显示的非常相似的文本框。如果您想了解更多信息,我鼓励您阅读typing 模块page

      也就是说,在大多数情况下,您将不需要该类型提示,因为通常需要更多文档字符串(“”“关于我的函数的信息“””)。

      【讨论】:

      • 看来您是对的,感谢您的帮助,但显然这仅适用于 2.7 以上的 python 版本。可悲的是,这不适用于我所拥有的。
      • Calltips 早在打字模块之前就已经存在,并且在 2.7 上运行良好)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2020-04-06
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      相关资源
      最近更新 更多