十、类型注解
前面有个示例,我们函数参数是字符串类型,但是pycharm工具不知道,所以不会给我们提示s的方法, 我们只能人工手写,效率大大降低。
类型注解: 在代码中涉及数据交互的地方,提供数据类型的注解(显式说明)
主要功能:
- 帮助第三方IDE工具(如pycharm)对代码进行类型推断,协助做代码提示
- 帮助开发者自身对变量进行类型注释
1. 变量的类型注解
变量类型注解,在变量后面加上 :类型
比如我们有如下的一些变量定义:
import random
# 基础数据-类型注解
name = "张三"
age = 10
b = False
# 类对象-类型注解
class Person:
pass
lisi = Person()
# 基础容器-类型注解
my_list = [1, 2, 3, 4]
my_tuple = (1, "python222", False)
my_dict = {"python222": 3.14, "java1234": 4.35}
# 容器类型元组-类型注解
my_list2 = [1, 2, 3, 4]
my_tuple2 = (1, "python222", False)
my_dict2 = {"python222": 3.14, "java1234": 4.35}
# 在注释中进行类型注解
r1 = random.randint(1, 10)
我们对这些变量进行类型注解:
import random
# 基础数据-类型注解
name: str = "张三"
age: int = 10
b: bool = False
# 类对象-类型注解
class Person:
pass
lisi: Person = Person()
# 基础容器-类型注解
my_list: list = [1, 2, 3, 4]
my_tuple: tuple = (1, "python222", False)
my_dict: dict = {"python222": 3.14, "java1234": 4.35}
# 容器元素类型-类型注解
my_list2: list[int] = [1, 2, 3, 4]
my_tuple2: tuple[int, str, bool] = (1, "python222", False)
my_dict2: dict[str, float] = {"python222": 3.14, "java1234": 4.35}
# 在注释中进行类型注解
r1: int = random.randint(1, 10) # type:int
2. 函数方法的类型注解
"""
函数(方法)的类型注解
形参注解
def add(x:int, y:int):
return x+y
返回值注解:
def 函数方法名(形参:类型,...形参:类型)-> 返回值类型:
pass
"""
def add(x: int, y: int) -> int:
return x + y
print(add(1, 2))
3. Union联合类型注解
我们看下如下的示例:
my_list2: list[int] = [1, 2, 3, 4]
my_dict2: dict[str, float] = {"python222": 3.14, "java1234": 4.35}
l1 = [1, "python222", True] # 如何注解多种元素类型
d1 = {"k1": "python222", "k2": 2222} # 如何注解多种元素类型
我们可以通过Union联合类型注解,来实现多类型注解
语法: Union[类型1,类型2,...类型n]
from typing import Union
l1: list[Union[int, str, bool]] = [1, "python222", True] # 如何注解多种元素类型
d1: dict[str, Union[str, int]] = {"k1": "python222", "k2": 2222} # 如何注解多种元素类型