python3注解类型typing

python3.5以上版本的注解类型typing

环境说明

python3.5以上

注解说明

在定义函数/方法时声明参数和返回值类型,仅为一种写法约定,无强制约束。让方法定义更加清晰,减少错误。

可以用于第三方的类型检查器、集成开发环境、静态检查器等

from typing import List, Optional
# 声明了一个函数 接收三个参数,分别是str类型的name,int类型的age,List类型且默认值为None的scores。返回值类型为bool
def test(name: str, age: int, scores: Optional[List] = None) -> bool:
	if scores:
		return True
	return False

官方文档

https://docs.python.org/zh-cn/3.10/library/typing.html

辅助工具

pyright微软出品,静态类型检查工具。以不符合typing定义参数类型的函数调用,会给出错误.VSCode中可以直接安装

常用注解

直接使用

str: 字符串 直接使用

int:int 直接使用

typing中

from typing import List, Dict

有多内置类型,List、Dict、Tuple等

from typing import Dict, List, Tuple

# List[int] 表示 内部值为int类型的列表

# Dict[str, int] 表示字典,键为str,值为int

# Tuple(int, str, int)  表示元组,内部元素值依次为(int, str, int)
# Tuple(int, ...) 表示内部值全部为int的元组
Any

默认值,不加类型注解时,就是Any,任意类型都可以

Union

或。语法格式如 Union[int, str] 表示int或者str

from typing import Union

# Union[int] 等同于  int

# 多重Union会自动解开,重置类型会被忽略
# Union[Union[int, str], int]  等同于  Union[int, str]
Optional

可选的,和Union有些像,注意区分。一般有None默认值的时候使用。仅支持单个类型

from typing import Optional
Optional[int] 等同于 Union[int, None] 会给与默认值
类型别名

给类型一个名字,简化代码

from typing import List
Scores = List[float]
# 如果这里的类型很长 Tuple[int, float, str, bool],甚至可以多类型组合

# 和 score: List[float]是一样的
def get_sum_score(scores: Scores) -> float:
    """获取总分数"""
    print(sum(scores))
    return sum(scores)
自定义类型NewType
from typing import NewType

UserId = NewType("UserId", int)

def filter_user_name(user_id: UserId) -> str:
    """根据用户id获取用户名"""
    print(user_id)
    return ""

# 这里必须是 UserId()   否则就不符合类型检查
filter_user_name(UserId(123))
# filter_user_name(123)  无法通过类型检查

你可能感兴趣的:(python系列,python,开发语言)