带冒号的函数参数

rue*_*edi 11 python function

我刚刚遇到了这个功能:

def splitComma(line: str):
    splits = Utils.COMMA_DELIMITER.split(line)
    return "{}, {}".format(splits[1], splits[2])
Run Code Online (Sandbox Code Playgroud)

我知道您可以用分隔参数,也可以在a = 39之类的参数中设置值,但我还没有看到像line:str这样的冒号。我已经在线检查了功能定义,但找不到类似的东西。这个冒号是什么意思?

che*_*ner 9

这是一个功能注释;函数参数和返回值可以使用任意Python表达式标记。Python本身会忽略注释(而不是保存注释),但是第三方工具可以使用它们。

在这种情况下,它用作类型提示:诸如此类的程序mypy可以静态分析您的代码(即,不运行它,而仅查看源代码本身)以确保仅将str值作为参数传递给splitComma

完整的注释还可以指定函数的返回类型:

def splitComma(line: str) -> str:
    ...
Run Code Online (Sandbox Code Playgroud)

(请注意,最初,不假定函数注释具有任何特定的语义。这仍然是正确的,但是如今,绝大多数的假设是注释提供了类型提示。)

  • 天哪,我在一次编码面试中得到了这个。我在想,“那是什么鬼???” xD 不用说,我没有得到这份工作。 (6认同)

wba*_*art 6

这是静态分析工具用来检查类型的类型注释。它有助于在您运行代码之前确保程序的正确性。