当前位置: 首页 > news >正文

Python3中typing模块

Python类型注解是Python 3.5版本之后引入的新特性,它可以让开发者在函数、变量等声明时为其指定类型。typing模型能够声明类型,防止运行时出现参数和返回值类型不符合的问题。

### 1. 基本类型注解
def hello(name: str) -> str:return ('Hello, ' + name)print(hello("张三"))### typing包 ###
### 2. 复合类型
from typing import List, Tuple, Dictmy_list = List[Tuple[str, int]] 
my_dict = Dict[str, str]my_list= [('a',1),('b',2)]
print(my_list)my_dict = {'name':"aa","addr":"xxx"}
print(my_dict)### 3. 类型别名
from typing import List# ector和List[float]将被视为可互换的同义词
Vector = List[float]vec = [1,2,3]
print(type(Vector))
print(List[float])
print(type(vec))def scale(scalar: float, vector: Vector) -> Vector:return [scalar * num for num in vector]# a list of floats qualifies as a Vector.
new_vector = scale(2.0, [1.0, -4.2, 5.4])
print(new_vector) # [2.0, -8.4, 10.8]### 3. 创建不同的类型
from typing import NewType,Tuple
UserInfo = NewType('UserInfo', Tuple[str,int])
user1 = UserInfo(("张三",20))
print(type(user1))
print(user1)### 4. Any类型
a: Any = None
a = [] # OK
a = 2 # OKs: str = ""
s = a # OK
print(s) # 2#Optional:可选类型
#Callable:可调用类型
#Literal:字面类型### 5. 用户定义的泛型类型
from typing import TypeVar, Generic
from logging import Logger
T = TypeVar('T')
class LoggedVar(Generic[T]):def __init__(self, value: T, name: str, logger: Logger) -> None:self.name = nameself.logger = loggerself.value = valuedef set(self, new: T) -> None:self.log('Set ' + repr(self.value))self.value = newdef get(self) -> T:self.log('Get ' + repr(self.value))return self.valuedef log(self, message: str) -> None:self.logger.info('%s: %s', self.name, message)

参考:

https://www.bookstack.cn/read/python-3.10.0-zh/e133648b02fa6d6d.md

http://www.lryc.cn/news/121658.html

相关文章:

  • C语言自动抓取淘宝商品详情网页数据,实现轻松高效爬虫
  • 数据结构---跳表
  • 为什么Tomcat的NIO在读取body时要模拟阻塞?
  • 26 | 谷歌应用APP数据分析
  • BFS 五香豆腐
  • opencv实战项目 手势识别-手势控制键盘
  • 1.作用域
  • 黑马B站八股文学习笔记
  • 前端常用的上传下载文件的几种方式,直接上传、下载文件,读取.xlsx文件数据,导出.xlsx数据
  • FPGA应用学习笔记--时钟域的控制 亚稳态的解决
  • AirServer是什么软件,手机屏幕投屏电脑神器
  • 如何使用 AT+WEBSERVER 指令实现自定义的 Webserver html 网页配网
  • 期权定价模型系列【4】—期权组合的Delta-Gamma-Vega中性
  • k8sday02
  • 黑马头条项目学习--Day2: app端文章查看,静态化freemarker,分布式文件系统minIO
  • 特语云用Linux和MCSM面板搭建 我的世界基岩版插件服 教程
  • 2023.8
  • CSV文件编辑器——Modern CSV for mac
  • 全国各地区数字经济工具变量-文本词频统计(2002-2023年)
  • MacOS安装RabbitMQ
  • 关于selenium 元素定位的浅度解析
  • 狐猬编程:货运
  • SpringBoot复习:(34)@EnableWebMvc注解为什么让@WebMvcAutoconfiguration失效?
  • 批量将CSV文件转换为TXT文件
  • vite跨域配置踩坑,postman链接后端接口正常,但是前端就是不能正常访问
  • Java设计模式-抽象工厂(Abstract Factory)模式
  • Hive加密,PostgreSQL解密还原
  • 2023年测试岗,接口测试面试题汇总+答案,拿捏面试官...
  • C# --- Case Study
  • 3.1 Spring MVC概述