在python中使用注解函数
最近在看aiohttp的源码,发现一种没有见过的定义函数写法def __enter__(self) -> None
,函数后面还跟着一个->
,这让一个以前受过C指针伤害过的人来说整个人都不好了,于是查了一下这个带箭头的用法,这里的->
的指针没有半毛钱关系。
这里的箭头其实是一种注解的写法,他是为了告诉调用者这个函数返回什么内容,如下面的代码
这告诉使用者,这个函数会返回一个int类型的值。 虽然在函数注解里虽然指定了返回一个int类型的值,但是我们知道在python 的返回值里可以返回任意类型的值,我们依然可以不按照注解来返回一个str类型的值这里写虽说不会报语法错误,可是谁看都会骂街,你既然告诉了你的使用者说你要返回一个int类型的值,可是你自己却给人家返回一个str类型的值,这都是不符合规范的。在使用pyCharm编辑器时,就会显示一个警告
Expected type 'int', got 'str' instead
对于函数的参数也可以使用注解¶
函数的参数也可以使用注解,用来告诉使用者需要传哪种类型的参数,方法是在参数后面加上一个冒号:
同样还是那个问题,你可以约束,但是我也可以不遵守,你让我传一个int,我偏要传一个str,语法上不会报错,但是会报一个警告
注意上面的注解写法是在python3才有的,如果在python2下运行会报语法错误!
