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

typing.Union` 标注一多种变量类型

typing.Union 标注一多种变量类型

typing.Union 是Python typing 模块中用于标注一个变量可以是多种类型之一的类型提示。在Python 3.10版本及以后,推荐使用 | 运算符代替 Union。不过,在详细介绍 Union 的用法前,值得注意的是在大多数情况下,如果一个变量可以是 None 或其他类型,你应该使用 Optional 类型,它是 Union 的一个特殊情况。

作为函数参数

当你有一个函数,其参数可以是多种类型中的一种时,你可以使用 Union 来标注这个参数。

from typing import Uniondef process_data(data: Union[str, bytes]) -> None:if isinstance(data, str):print("Data is a string:", data)else:print("Data is bytes:", data.decode('utf-8'))

在这个例子中,process_data 函数接受一个参数 data,它可以是 strbytes 类型。函数内部使用 isinstance 函数来检查 data 的类型,并据此执行不同的操作。

作为返回值

Union 也可以用来标注一个函数的返回值可能是多种类型中的一种。

from typing import Uniondef get_data(flag: bool) -> Union[str, bytes]:if flag:return "Hello, world!"else:return b"Hello, world!"

在这个例子中,get_data 函数根据布尔参数 flag 返回一个 strbytes 类型的值。

使用 | 运算符

从Python 3.10开始,你可以使用 | 运算符来代替 Union

def process_data(data: str | bytes) -> None:if isinstance(data, str):print("Data is a string:", data)else:print("Data is bytes:", data.decode('utf-8'))def get_data(flag: bool) -> str | bytes:if flag:return "Hello, world!"else:return b"Hello, world!"

在这个例子中,process_dataget_data 函数的类型标注方式与之前使用 Union 的例子相同,但更为简洁。

注意事项

  • 使用 Union| 运算符时,应确保你的代码能正确处理所有可能的类型。
  • 对于可以是 None 的类型,推荐使用 Optional[Type],这等同于 Union[Type, None]
  • 使用 Union 时,避免将太多的类型组合在一起,这会使代码更难以阅读和维护。如果一个变量可以有许多不同的类型,考虑是否可以通过重构代码或使用类和继承来简化类型关系。
  • 在使用 Union| 运算符时,确保你的代码在运行时也能正确处理所有声明的类型。这可能涉及到运行时类型检查和适当的错误处理。

相关文章:

typing.Union` 标注一多种变量类型

typing.Union 标注一多种变量类型 typing.Union 是Python typing 模块中用于标注一个变量可以是多种类型之一的类型提示。在Python 3.10版本及以后,推荐使用 | 运算符代替 Union。不过,在详细介绍 Union 的用法前,值得注意的是在大多数情况下…...

OSPF高级特性

OSPF高级特性(1) 一、OSPF不规则区域类型 产生原因:区域划分不合理,导致的问题 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 造成后果:非骨干区域没和骨干区域相连,导致ABR将不会帮忙转发区域间的路由信息。非骨干区…...

mysql中日期的加减 date_add()、date_sub() 函数

一、说明 DATE_ADD() :从日期增加指定的时间间隔,返回的是一个字符串 DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 type 参数可以是下列值 二、使用 now() //now函数为获取当前时间 sele…...

实在智能携手品牌商家,在活动会面中共谋发展

金秋十月,丰收的季节,也是商家们在双11大展拳脚的时刻。为迎战一年一度的双11大促,品牌商家在10月份卯足劲,制定一系列营销方案,争取为店铺带来更多流量和订单。 其中,舍得、同科医药、梅子熟了、宝洁、维…...

EXSi系统安装与使用

文章目录 EXSi系统安装与使用EXSi系统安装1.打开VMware Workstation软件2.安装系统3.配置虚拟机 使用EXSi登录web页面扩充存储创建虚拟机使用虚拟机 EXSi系统安装与使用 EXSi系统安装 1.打开VMware Workstation软件 创建虚拟机 2.安装系统 等待 回车 F11 回车 回车 设置密码…...

Spring MVC (Next-1)

1.Restful请求 restFul是符合rest架构风格的网络API接口,完全承认Http是用于标识资源。restFul URL是面向资源的,可以唯一标识和定位资源。 对于该URL标识的资源做何种操作是由Http方法决定的。 rest请求方法有4种,包括get,post,put,delete.分别对应获取…...

双目视觉检测 KX02-SY1000型测宽仪 有效修正和消除距离变化对测量的影响

双目视觉检测的基本原理 利用相机测量宽度时,由于单个相机在成像时存在“近大远小”的现象,并且单靠摄入的图像无法知道被测物的距离,所以由被测物的跳动导致的被测物到工业相机之间距离变化,使测量精度难以提高。 因此测宽仪需…...

C++ 面向对象 学习 优秀教程

油管看视频 沉浸式翻译插件,实现中文字幕! 文章目录 Object Oriented Programming (OOP) in C Course Object Oriented Programming (OOP) in C Course https://www.youtube.com/watch?vwN0x9eZLix4 博主:https://www.youtube.com/CodeBeau…...

Python笔记——pyChram连接linux子系统,使用linux下的Python进行编译

Python笔记——pyChram连接linux子系统,使用linux下的Python进行编译 Linux子系统安装与配置安装前准备安装Linux子系统安装Python3.8配置pyCharm 最近要跑的实验里,python有个机器学习的库windows环境下是没有的,在linux环境下有。虚拟机又不…...

【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表4.2.3三元组表的转置、加法、乘法、操作转置加法乘法算法测试实验结果代码整合 4.2.1 矩阵的数组表示 【数据结构】数组和字符串…...

Spring底层原理(四)

Spring底层原理(四) 本章内容 模拟实现Spring中的几个常见BeanFactory后置处理器 常见的BeanFactory后置处理器 GenericApplicationContext context new GenericApplicationContext(); context.registerBean("config",Config.class); context.registerBean(Conf…...

Android 14 rook替代Postern进行中间人抓包

以下是关于使用Brook替代Postern进行中间人抓包的说明: 先来解释下,为什么用Postern而不用fd,fd属于代理抓包。Postern属于是模拟出来一张虚拟网卡抓包。性质不一样,所以害怕大哥问我。我就先放在这里 在Android 14及之前的版本中…...

[rancher] rancher部署和使用的一些思考

最近因为工作需要,学习调研rancher的使用 k8s作为主流微服务部署的基础,已经逐渐在工作中普及。但是k8s dashboard用于生产管理,还是有所欠缺:我们需要一个k8s之上的管理平台。经过调研,目前rancher已经迭代开发至v2.8…...

迅镭激光董事长颜章健荣膺“2023年如皋市科技强企人物”!

10月28日,2023如皋科技人才洽谈会开幕式在如皋隆重举行。江苏省科学技术厅副厅长、党组成员蒋洪,江苏省商务厅副厅长、党组成员孙津,中共南通市委副书记、政法委书记沈雷,中共如皋市市委书记何益军,中共如皋市委副书记…...

专业医学病例翻译公司推荐

我们知道,医学病例翻译在涉外看病的患者中具有广泛的应用,它可以帮助医生快速了解患者的病情,为治疗和药物处方提供关键信息。因此,对于出国看病的患者,医学病例翻译便成了不可或缺的重要工具。 翻译医学病例不仅要求译…...

英飞凌TC3xx-Overlay

目录 1.数据访问重定向 2.寄存器说明 3.Overlay功能配置 3.1 确认用于重定向的CPU 3.2 配置重定向Block大小 3.3 配置目标地址和重定向地址 4.结果验证 5.小结 今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay…...

Win10系统有几种复制文件的命令,哪种最强大?

环境: Win10 专业版 问题描述: Win10系统有几种复制文件的命令,哪种最强大? 解决方案: 在 Windows 10 中,复制文件的命令有以下几种: 使用 xcopy 命令:xcopy 是一个功能强大的…...

力扣202.快乐数

原题链接:202.快乐数 要记住的就是,需要判断元素是否出现过,或者是否在集合里存在,就可以考虑用哈希法去做 因为是每一位都进行平方后相加得到新的数,所以需要单独写一个函数进行每位相加的运算得到最终的sum 不断重…...

iOS Xcode15 适配:Other Linker Flags:-ld_classic

0x00 适配是一条没有尽头的路 Xcode 14 毛问题都没有,Xcode 15 崩溃 看图说话 0x01 解决方案 Other Linker Flags 添加 -ld_classic 即可 0x02 我的小作品 欢迎体验我的作品之一:小挑战-XGame 拼图游戏,渐变色游戏,经典24点游…...

springboot苍穹外卖实战:六、redis(Spring Data Redis)

Spring Data Redis 简介 网址:https://spring.io/projects/spring-data-redis Spring Data Redis中提供了一个高度封装的类:RedisTemplate,对相关api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下&#xff1…...

告别提取码困扰:baidupankey让百度网盘资源获取效率倍增

告别提取码困扰:baidupankey让百度网盘资源获取效率倍增 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 一、用户困境解析:提取码获取的隐性成本 在数字化资源交换日益频繁的今天,百度网盘…...

欧姆龙CP1e与三台欧姆龙变频器485 Modbus通讯启停及频率给定控制

欧姆龙CP1e与三台欧姆龙变频器走485modbus通讯程 启停,频率给定控制在工业自动化领域,欧姆龙的CP1e系列PLC与变频器的通讯控制是一个常见的应用场景。今天,我们就来聊聊如何通过485 Modbus协议,实现CP1e与三台欧姆龙变频器的启停和…...

2026届毕业生推荐的六大AI辅助论文方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术论文撰写里,DeepSeek是智能写作辅助工具,它展现出显著效能。使…...

Java自动化生成Mapbox-GL雪碧图及JSON配置实战指南

1. 为什么需要自动化生成雪碧图? 在地图应用开发中,图标资源管理一直是个让人头疼的问题。我刚开始接触Mapbox-GL时,每次新增或修改图标都要手动拼接图片、调整JSON配置,效率低还容易出错。后来发现用Java程序自动化处理&#xff…...

Java面试题知识图谱构建:利用PyTorch 2.8图神经网络(GNN)技术

Java面试题知识图谱构建:利用PyTorch 2.8图神经网络(GNN)技术 1. 引言:Java面试题的痛点与解决方案 对于准备Java面试的开发者来说,最大的挑战不是找不到学习资料,而是面对海量分散的知识点无从下手。JVM…...

gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程

gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程 【免费下载链接】gopher-os A proof of concept OS kernel written in Go 项目地址: https://gitcode.com/gh_mirrors/go/gopher-os gopher-os是一个用Go语言编写的操作系统内核概念验证项目&…...

在科技革新与政策红利的双重驱动下,低空经济正成为全球城市发展的新引擎。随着城市空中交通(UAM)场景的快速落地,气象预测技术作为核心支撑,其重要性日益凸显。

一、低空经济的气象挑战与技术突破低空经济依托 1000 米以下空域构建立体交通网络,涵盖物流配送、应急救援、城市通勤等多元场景。然而,该空域受边界层湍流、强对流、风切变等复杂气象条件影响显著,对气象服务的时空分辨率和响应速度提出严苛…...

若依(RuoYi)SpringBoot框架前后端数据安全传输实践:基于Base64的接口加解密方案

1. 为什么需要接口数据加密? 最近在做一个金融类项目时,客户明确要求所有接口传输数据必须加密。这让我意识到,很多开发者可能忽略了接口安全的重要性。想象一下,如果你的API数据在传输过程中被截获,用户密码、身份证号…...

Calico IPIP 使用指南延

本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow(工作流) 框架,用于编排和协调多个智能体(Agent)或处理组件的执行流程。 本课将以通俗易懂的方式,帮助你理解 MAF Workflow 的核心概念…...

AI赋能表情包创作:从Midjourney到微信变现全流程解析

1. 为什么AI表情包创作是普通人也能玩的赚钱机会 记得去年帮朋友设计一套生日主题表情包,光是草图就改了七八遍,前后折腾两周才勉强能用。现在用Midjourney生成类似质量的素材,从输入提示词到导出成品,实测最快9分38秒就能完成——…...