目录
(1)类型标注进化历史
从Python 3.0开始的类型标注
从Python 3.5开始的类型标注库 typing
(2)更细化的类型标注
1.返回一个列表,且列表的元素类型是指定的
2.返回字典类型,键和值都是指定类型
3.返回自定义类型
(1)类型标注进化历史
从Python 3.0开始的类型标注
Python 3.0开始,Python 已经支持基础的类型标注,例如,你可以在函数声明中这样写:
def func(a: int, b: str) -> bool:return b.isdigit() and a > int(b)
这里的int, str, bool都是类型标注,他们说明了函数参数和返回值的类型。
从Python 3.5开始的类型标注库 typing
从 Python 3.5开始,Python 增加了一个新的模块,叫做typing。这个模块定义了很多用于类型标注的类和函数,包括一些容器类型,例如List, Dict, Tuple等。
from typing import List, Dict def func(a: List[int], b: Dict[str, int]) -> bool: p1 = all(isinstance(x, int) for x in a)p2 = all(isinstance(k, str) and isinstance(v, int) for k, v in b.items())ret = p1 and p2 return ret
这里的List[int]和Dict[str, int]是类型标注,他们分别表示一个整数列表和一个以字符串为键,整数为值的字典。
(2)更细化的类型标注
1.返回一个列表,且列表的元素类型是指定的
如果你想要指定一个函数返回一个列表,且列表的元素具有特定类型,你可以使用类型提示来实现。以下是一个简单的例子:
from typing import Listdef create_list_of_integers(length: int) -> List[int]:result = [i for i in range(length)]return result# 调用函数
my_list = create_list_of_integers(5)
print(my_list)
在这个例子中,create_list_of_integers 函数接受一个整数参数 length,并返回一个包含整数的列表。通过在函数声明中使用 -> List[int],我们明确了返回的是整数类型的列表。
如果你的函数返回的列表包含不同类型的元素,你可以使用 Union 类型来表示这个混合类型的列表。例如:
from typing import List, Uniondef create_mixed_list(length: int) -> List[Union[int, str]]:result = [i if i % 2 == 0 else str(i) for i in range(length)]return result# 调用函数
mixed_list = create_mixed_list(5)
print(mixed_list)
在这个例子中,create_mixed_list 函数返回一个包含整数和字符串的列表。使用 Union[int, str] 来表示列表的元素类型可以容纳这两种不同的数据类型。
2.返回字典类型,键和值都是指定类型
如果你想要指定一个函数返回一个字典,且字典的键和值都具有特定的类型,你可以使用类型提示。以下是一个例子:
from typing import Dictdef create_dict_of_integers(length: int) -> Dict[int, int]:result = {i: i * 2 for i in range(length)}return result# 调用函数
my_dict = create_dict_of_integers(5)
print(my_dict)
在这个例子中,create_dict_of_integers 函数接受一个整数参数 length,并返回一个字典,其中键和值都是整数类型。通过在函数声明中使用 -> Dict[int, int],我们明确了返回的字典的键和值的类型。
如果你的函数返回的字典包含不同类型的键和值,你可以使用 Dict 和 Union 类型。例如:
from typing import Dict, Uniondef create_mixed_dict(length: int) -> Dict[Union[int, str], Union[int, str]]:result = {i: str(i) if i % 2 == 0 else i for i in range(length)}return result# 调用函数
mixed_dict = create_mixed_dict(5)
print(mixed_dict)
在这个例子中,create_mixed_dict 函数返回一个包含整数和字符串的字典,使用 Dict[Union[int, str], Union[int, str]] 来表示字典的键和值的混合类型。
3.返回自定义类型
像下面这样,自定义了一个DataInfo类,函数get_data_info()指定返回一个列表,且列表的元素类型必须为DataInfo。
from typing import List, Dictclass DataInfo(object):def __init__(self):self.name = "tom"self.age = 18self.value_list = []self.test_ret = 0.3789self.income_dict = dict()def get_data_info() -> List[DataInfo]:m = DataInfo()x = [m]return xret = get_data_info()
print(ret[0].test_ret)
end