【问题标题】:Meaning of a function "-> str" [duplicate]函数“-> str”的含义[重复]
【发布时间】:2016-07-16 00:49:17
【问题描述】:
def f(ham: str, eggs: str = 'eggs') -> str:
    print("Annotations:", f.__annotations__)
    print("Arguments:", ham, eggs)
    return ham + ' and ' + eggs

上面的代码块来自https://docs.python.org/3.5/tutorial/controlflow.html#documentation-strings

我的问题是关于上述代码块中的-> str。它有什么作用?

【问题讨论】:

  • 但是.. 该链接明确解释它的作用。您已经完全链接到该语法的规范文档。
  • @DanielRoseman def f(ham: str, eggs: str = 'eggs') 在这个块中他们确实提到了 str,那么为什么他们最后又要标记/说同样的话?
  • 因为该块中的str 与传入的变量类型有关,而不是与返回的变量类型有关。
  • @DanielRoseman 是对的,您的链接还引用了PEP 0484,其中对此进行了更详细的说明。
  • PEP 0484 可能是您想知道的关于类型提示/函数注释的当前状态的全部内容。

标签: python


【解决方案1】:

这些是类型提示。各种类型检查器可以使用它们来确定您是否使用了正确的类型。在您的示例中,您的函数期待 str 类型的 hamstr 类型的 eggs(默认为 eggs)。最后的-> str 暗示这个函数的返回类型也应该是str

欲了解更多信息,请参阅:

【讨论】:

  • 如果我不将它作为字符串返回怎么办?
  • 您的代码不会受到影响 - 它仍会运行,但如果您通过类型检查器(例如 mypy)运行代码,您会收到警告。
  • What if I do not return it as a string? 试试看。这取决于上下文。如果这是您所要求的,Python 不会输入检查返回值。
  • 正如@dawg 所提到的——了解这些东西的最好方法是亲自尝试——打开一个shell,创建一个具有该注释的函数(或从示例中复制它)并尝试运行它。
【解决方案2】:

它指定返回值。它与代码完全无关,仅用于文档目的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2012-11-11
    • 2020-10-23
    相关资源
    最近更新 更多