【一】引言
- 在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持。
- 这个模块在增强代码可读性和维护性方面提供了帮助。
- 本文将深入探讨typing模块,介绍其基本概念、常用类型注解以及使用示例,以帮助读者更全面地了解和应用静态类型注解。
【二】基本类型注解
【1】基础语法
def example(参数名: 参数类型) -> 返回值类型:
代码块
return 返回值
【2】内置类型
- typing模块中提供了与Python内置类型相对应的类型提示,比如int、float、str、bool等
def user(name: str, password: int, salary: float, tag: bool):
print(name, type(name)) # 字符串类型
print(password, type(password)) # 整数类型
print(salary, type(salary)) # 浮点数类型
print(tag, type(tag)) # 布尔类型
user('ligo', 123, 3000.5, True)
# ligo <class 'str'>
# 123 <class 'int'>
# 3000.5 <class 'float'>
# True <class 'bool'>
【3】类型别名
- typing模块中有多种内置的类型别名,比如List、Dict、Tuple、Set等,用于注解变量和函数的预期类型
(1)列表类型
from typing import List
# 定义一个名为user的函数,接收一个整数列表(List[int])类型的参数user_data,并无返回值(None)
# 函数作用:打印传入数据user_data是一个整数列表,以及列表中的每个元素都是整数类型,同时输出数据本身
def user(user_data: List[int]) -> None:
print(user_data, type(user_data))
user(['ligo', 123]) #['ligo', 123] <class 'list'>
(2)字典类型
from typing import Dict
# 定义一个名为user的函数,接收一个字典(Dict[str, int])类型的参数user_data,其中键为字符串(str),值为整数(int),并无返回值(None)
# 函数作用:打印传入数据user_data是一个字典,键为字符串类型,值为整数类型,同时输出数据本身
def user(user_data: Dict[str, int]) -> None:
print(user_data, type(user_data))
user({'password': 123}) #{'password': 123} <class 'dict'>
(3)元祖类型
from typing import Tuple
# 定义一个名为user的函数,接收一个元组(Tuple[str])类型的参数user_data,其中元素为字符串(str),并无返回值(None)
# 函数作用:打印传入数据user_data是一个元组,所有元素均为字符串类型,同时输出数据本身
def user(user_data: Tuple[str]) -> None:
print(user_data, type(user_data))
user(('1', '2', '3')) # ('1', '2', '3') <class 'tuple'>
(4)集合类型
from typing import Set
# 定义一个名为user的函数,接收一个集合(Set[int])类型的参数user_data,其中元素为整数(int),并无返回值(None)
# 函数作用:打印传入数据user_data是一个集合,所有元素均为整数类型,同时输出数据本身
def user(user_data: Set[str]) -> None:
print(user_data, type(user_data))
user({1, 2, 3}) #{1, 2, 3} <class 'set'>
【4】Any
- Any表示任意类型,用于无法确定具体类型或者希望允许任何类型的情况
#Any表示允许任何类型的数据
from typing import Any
# 定义一个名为user的函数,接收一个Any类型的参数user_data,表示该参数可以是任何类型的数据
# 函数没有返回值,声明为None
def user(user_data: Any) -> None:
print(user_data,type(user_data))
user('ligo')
user(123)
user({1, 2, 3})
user(1.23)
# ligo <class 'str'>
# 123 <class 'int'>
# {1, 2, 3} <class 'set'>
# 1.23 <class 'float'>
【5】Union类型
- Union允许参数接受多种不同类型的数据
#Union允许函数接收多种类型作为参数或返回值
from typing import Union
# 定义一个名为number的函数,接收一个联合类型(Union[int, float, str])的参数number,可以是整数(int)、浮点数(float)或字符串(str)
# 函数返回值也为联合类型(Union[int, float, str]),即返回结果可能是整数、浮点数或字符串
def number(num: Union[int, float, str]) -> None:
print(num, type(num))
number('ligo') # ligo
number(123) # 123
number(1.23) # 1.23
# ligo <class 'str'>
# 123 <class 'int'>
# 1.23 <class 'float'>
【6】Optional类型
- Optional表示参数可以是指定类型或者None
# Optional[str]表示字符串类型或None
from typing import Optional
# 定义一个名为user的函数,接收一个Optional[str]类型的参数name,表示该参数可以是字符串类型或None
# 函数返回一个str类型的结果
def user(userdata: Optional[str]) -> int:
print(userdata, type(userdata))
user('ligo') # ligo <class 'str'>
# 定义一个名为user的函数,接收一个Optional[int]类型的参数name,表示该参数可以是字符串类型或None
# 函数返回一个int类型的结果
def user(userdata: Optional[int]) -> int:
print(userdata, type(userdata))
user(123) # 123 <class 'int'>
标签:None,Python,data,函数参数,int,user,str,类型,Optional
From: https://www.cnblogs.com/ligo6/p/18179997