Python代码写起来很快,但阅读起来,就很抓狂,主要问题就是类型信息丢失,看到一个函数或方法,都不知道如何传递参数,该函数会返回什么结果。只有运气来,才可以看到类型信息。
Python 3.6版本之后,新增了类型注解特性(type hint),用户标记函数参数和返回值的类型,该特性主要是给人和IDE用的,实际代码执行的时候,并不会有作用,即使传递不期望的类型,依然会执行。接下来,列绝一些常用的类型注解。
def add(x : int, y: int) -> int:
return x + y
from typing import List
def add(x : List[int], y: List[int]) -> List[int]:
pass
class YourClass:
pass
def print_your_classes(obj:List[YourClass]):
pass
from typing import Union
def add(x : Union[int,str], y: Union[int,str]) -> Union[int,str]:
pass
def add(x : int = 0, y: int = 0) -> int:
pass
class YourClass:
pass
def print_your_classes(obj: YourClass=None):
pass
from typing import Callable
def func_hint(call : Callable[[int,int],int])->int:
pass
class YourClass:
def set(self, field:str, value:any)->'YourClass':
return self
对象方法返回自身,不能直接使用类名,而是用类名的字符串形式。
def add(x:any, y:any)->any:
pass
默认情况下,注解相当于注释,只供IDE和人审视。也可以安装第三方库(mypy、pytype、pyre、pyright
),通过命令行进行检查。
pip3 install mypy
python3 -m mypy --strict example.py
自由,总会带来一定的弊端,Python因为是动态类型,学起来很简答,但也因为没有了类型信息,代码不好看懂。上面总结了,常用的几种类型注解,一般情况下够用了。使用新版本的Python时候,建议多用类型注解,因为Python代码量一旦上去了,阅读起来会很困难,类型注解会大大提高代码的可读性。