Python3 函数定义、箭头和冒号

Python3 function definition, arrow and colon

我找到了以下 python 函数定义:

def reverseString(self, s: 'List[str]') -> 'None':

我不太明白'List[str]'->'None'

我发现箭头是 但我找不到任何对 List[str] 有用且易于理解的东西。

它只是一个注释吗?还是强制参数 s 的类型必须是字符串数组?

这只是 python 类型提示,您可以在 PEP 484

中了解更多信息

只要函数在调用时始终提供 s 值,列表 [str] 就不会真正发挥作用。我用 s: 'something different than list[str]' 尝试了这个功能,它的工作原理是一样的。


关于箭头问题,试试看:

def reverseString(self, s: 'List[str]') -> 'None':
    pass

致电:

output=reverseString('exampleinput1','exampleinput2')

然后检查输出:

print(c)

None

type(output)

NoneType

有关箭头的更多信息 here

这是 python3 类型提示的一个实例。使用 -> 'None' 表示该函数没有 return 语句。

List[str] 更有趣:List 部分表明它将 return 一个列表类型,它的参数 [str] 表明它是一个参数化类型。实际上,python 列表可以包含任何类型的对象,但在强类型语言中,列表是同类集合。

使用这个提示既向函数的调用者表明 s 必须只包含字符串,从而避免执行任何操作的任何异常,它也向智能 IDE (例如 PyCharm、VSCode)列表中包含的对象具有用于自动完成指示符的字符串实例方法。

python 解释器不会在类型检查方面对这些信息做任何事情,但是 mypy 解释器会对您的代码进行类型检查。

有关详细信息,请参阅 PEP 484 and the typing module, which has also been backported 到 pre-3.5 python3 和 2.7。