Python3函数定义,箭头和冒号

时间:2019-02-06 10:39:44

标签: python python-3.x function-definition

我发现了以下python函数定义:

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

我不太了解“列表[str]” ->“无”

我发现箭头是function annotation,但对于List [str]我找不到任何有用和可理解的东西。

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

3 个答案:

答案 0 :(得分:0)

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

中了解更多信息

答案 1 :(得分:0)

只要在调用函数时始终为其提供一个s值,list [str]就不会真正起作用。我使用s: 'something different than list[str]'尝试了该功能,并且效果相同。


关于箭头问题,请尝试一下:

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

致电:

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

然后检查输出:

print(c)
  

没有

type(output)
  

NoneType

有关箭头here的更多信息。

答案 2 :(得分:0)

这是python3类型提示的实例。使用List[str]表示该函数没有return语句。

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

使用此提示既可以指示函数的调用者{{1}}仅包含字符串,从而可以避免将要执行的任何操作的任何异常,还可以指示智能IDE(例如PyCharm,VSCode)列表中包含的对象具有用于自动完成指示符的字符串实例方法。

python解释器在术语类型检查中不使用此信息进行任何操作,但是mypy解释器将对您的代码进行类型检查。

有关更多信息,请参见PEP 484typing模块,它们也是backported到3.5之前的python3和2.7版。