python基础——类型注解【变量,函数,Union】
📝前言:
上一篇文章Python基础——面相对象的三大特征提到,python中的多态,python中,类型是动态的,这意味着我们不需要在声明变量时指定其类型。然而,这可能导致运行时错误,因为我们可能意外地使用了错误的类型,所以这篇文章来讲解一下python中的类型注解。
类型注解提供了一种方法,可以在编写代码时显式指定预期的类型,从而减少这些错误。
🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:自律的本质,就是亲手杀死曾经那个颓废的自己
文章目录
- 一,什么是类型注解
- 二,为变量设置类型注解
- 1,基础数据类型注解
- 2,类对象类型注解
- 3,基础容器类型注解
- 4,元素类型详细注解
- 三,函数的类型注解
- 四,联合类型注解
一,什么是类型注解
类型注解是一种为函数、类或模块参数和返回值指定预期类型的方法。它们用于提高代码可读性和帮助开发者在开发过程中捕获潜在的类型错误。类型注解不会强制执行类型检查,但它们可以与第三方工具结合使用,以实现更严格的类型检查。
例如,当我们在给函数输入变量的时候,我们就可以使用Ctrl+p来查看类型注解:

二,为变量设置类型注解
语法:
变量: 类型
除了使用这种语法做注解外,也可以在注释中进行类型注解。
语法:
# type: 类型
例如:

但是,第一种更为常用,所以,下面主要介绍第一种类型注解的方法
1,基础数据类型注解

2,类对象类型注解

3,基础容器类型注解

4,元素类型详细注解

注意:
1,元组类型设置类型详细注解,需要将每一个元素都标记出来
2,字典类型设置类型详细注解,需要2个类型,第一个代表key,第二个代表value
什么时候用类型注解?👇🏻

三,函数的类型注解
语法:
def 函数名(参数1:类型, 参数2:类型, ……) -> 类型:pass
参数:类型:对参数进行注解
->类型:对返回值进行注解
例如,我们对一个加法函数进行类型注解:

四,联合类型注解
我们用Union[类型, 类型, ……]来定义联合类型注解(要导包:from typing import Union)
使用场景:
当我们给序列进行类型注解的时候:

上面这种情况,容器里的元素都是同类型的
但是
当我们遇到容器中的元素是不同类型的,如:

这时候,我们就可以使用Union来进行注解

Union联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用。

(以上图片来源于B站黑马程序员,如有侵权,请告知)
🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!
相关文章:
python基础——类型注解【变量,函数,Union】
📝前言: 上一篇文章Python基础——面相对象的三大特征提到,python中的多态,python中,类型是动态的,这意味着我们不需要在声明变量时指定其类型。然而,这可能导致运行时错误,因为我们…...
人工智能研究生前置知识—科学计算库numpy
人工智能研究生前置知识—科学计算库numpy numpy是python中做科学计算的基础库,对数组进行操作 整个numpy的操作和使用比较简单因此可以通过案例的学习掌握基本的用法在之后的学习中不断的进行熟悉和补充 创建数组(矩阵 ) 创建的ndarray数组…...
element UI 设置type=“textarea“ 禁止输入框缩放
背景 在 Element UI 中,当您使用 el-input 组件并设置 type"textarea" 时,默认情况下,用户可以通过拖动输入框的右下角来调整其大小。如果您想禁止这种缩放行为,需要使用 CSS 来覆盖默认的浏览器行为。 注意上图&#x…...
Rust腐蚀服务器常用参数设定详解
Rust腐蚀服务器常用参数设定详解 大家好我是艾西,一个做服务器租用的网络架构师上期我们分享了rust腐蚀服务器的windows系统搭建方式,其中启动服务器bat参数因为涉及的东西比较多所以想通过这篇文章给大家做一下详细的分享。 (注本文中xxxx…...
无人机巡检技术革命性变革光伏电站运维管理
在中国广袤的大地上,光伏电站如雨后春笋般崛起,晶体硅组件板在阳光下熠熠生辉,为人们带来了源源不断的绿色能源。然而,随着光伏产业的迅猛发展,电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入,…...
【学习】软件信创测试中,如何做好兼容性适配
在软件信创测试的领域中,兼容性适配是至关重要的一环。如何确保软件在不同的操作系统、硬件设备和软件环境中稳定运行,是每个测试人员需要面对的挑战。本文将从几个方面探讨如何做好兼容性适配,以提高软件的稳定性和用户体验。 首先…...
阿里云ACK k8s集群迁移
1、创建k8s集群 阿里云ACK创建 2、创建所需的第三方插件 ACK ingress创建 3、导出原有ACK集群配置 包含deployment、service、ingress、PersistentVolumeClaim 执行命令 kubectl get deployment,service,secret,ingress,PersistentVolumeClaim -n <namespace_name> -o y…...
1.3 字符设备驱动
1、字符设备驱动工作原理 2、file_operations结构体 struct file_operations { struct module *owner; //拥有该结构的模块的指针,一般为THIS_MODULES loff_t (*llseek) (struct file *, lof…...
计算机毕业设计springboot小区物业报修管理系统m8x57
该物业报修管理系统实施的目的在于帮助物业管理企业升级员工管理、住户管理、报修问题管理等内部管理平台,整合物业管理企业物力和人力,全面服务于维修人员管理的内部管理需求,并重视需求驱动、管理创新、与业主交流等外部需求,通过物业管理企业各项资源…...
深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用
1. 卷积神经网络 卷积神经网络(CNN)是一种特别适用于处理具有网格结构的数据,如图像和视频的人工神经网络。可以将其视作一个由多层过滤器构成的系统,这些过滤器能够处理图像并从中提取出有助于进行预测的有意义特征。 设想你手…...
js 数字的常用方法梳理
toFixed:保留几位小数。toFixed(保留小数位)。注意:不做任何的四舍五入。 Math集合: random:获取一个0-1之间的随机数。注意,包含0,不包含1。 round:四舍五入取整数,最后返回一个整数值。 ceil:向上取整。 floor:…...
STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(5)
接前一篇文章:STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(4) 本文参考以下文章及视频: STM32CbueIDE Audio播放音频 WM8978 I2S_stm32 cube配置i2s录音和播放-CSDN博客 STM32第二十二课(I2S,HAL&am…...
Objective-C学习笔记(block,协议)4.10
1.block:是一个数据类型,存储一段代码,代码可以有参数有返回值。 2.声明block: 返回值类型 (^block变量名称)(参数列表); int (^myblock) (int num1,int num2); 代码段格式:^返回值类型(参数列表){ 代码段 }; int (^m…...
AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI
AD7982BRMZRL7是一款由Analog Devices(亚德诺)公司生产的18位逐次逼近型模数转换器(ADC)。它主要用于将模拟信号转换为数字信号,适用于数据采集系统、嵌入式系统、工业控制和医疗设备等领域。 AD7982BRMZRL7的主要功能…...
采集某新闻网资讯网站保存PDF
网址:融资总额近3亿美元、药明康德押注,这家抗衰老明星公司有何过人之处-36氪 想要抓取文章内容,但是找不到啊,可能是文字格式的问题,也可能文章内容进行了加密。 在元素中查看,window.initialState返回的就…...
03攻防世界-unserialize3
根据题目可以看出,这是个反序列化的题目 打开网址观察题目可以看到这里是php的代码,那么也就是php的反序列化 本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 序列化的意思是:是将变量转换为可保存或传输…...
蓝桥杯备考随手记: 常见的二维数组问题
在Java中,二维数组是一种可以存储多个元素的数据结构。它由多个一维数组组成,这些一维数组可以看作是行和列的组合,形成了一个矩阵。 1. 二维数组旋转问题 二维数组的旋转是指将数组中的元素按照一定规则进行旋转。通常有两种常见的旋转方式…...
Java | Leetcode Java题解之第28题找出字符串中第一个匹配项的下标
题目: 题解: class Solution {public int strStr(String haystack, String needle) {int n haystack.length(), m needle.length();if (m 0) {return 0;}int[] pi new int[m];for (int i 1, j 0; i < m; i) {while (j > 0 && needl…...
【数据结构与算法】:二叉树经典OJ
目录 1. 二叉树的前序遍历 (中,后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中,后序类似) 这道题的意思是对二叉树进行前序遍历,把每个结点的值都存入一个数组中,并且返回这个数组。 思路&…...
uniapp——长按识别二维码
说明 转变思路,长按图片,进入预览图片,这时候再长按就可以了。 <view class"codeMain"><view class"codeWhite" longpress"handleLongPress(i.image(qrcode))"><image :src"i.image(qrc…...
PS抠头发太费劲?几种简单方法轻松搞定
作为一名从事平面设计5年的老选手,抠头发绝对是PS修图中最让人头疼的环节——要么抠不干净留杂边,要么太用力丢失细碎发丝,尤其是面对杂色背景、飘逸长发、逆光发丝时,更是让人束手无策。今天就给大家分享3种超实用的PS抠头发丝方…...
RANSAC算法调参指南:迭代次数和容差阈值到底怎么设?附Python/Matlab实例
RANSAC算法实战调参手册:从理论到代码的深度解析 在三维重建、自动驾驶和工业检测等机器视觉应用中,数据噪声和异常值一直是模型拟合的噩梦。传统最小二乘法就像一位过分认真的学生,试图让所有数据点都满意,结果却被少数离群点带偏…...
adloop:可编程规则引擎驱动的浏览器网络请求深度拦截与定制
1. 项目概述:一个被低估的广告拦截与隐私增强工具如果你和我一样,是个对网页上无处不在的弹窗广告、自动播放视频和恼人的跟踪脚本感到深恶痛绝的互联网用户,那你一定尝试过各种广告拦截器。从大名鼎鼎的AdBlock Plus、uBlock Origin…...
搞懂VMware三种网络模式:从NAT断网到桥接、仅主机的实战选择指南
VMware虚拟网络模式深度解析:从原理到场景化实战 当你在深夜赶项目时,虚拟机突然无法联网——这种经历对于开发者而言无异于噩梦。我曾亲眼见过团队新人在演示前夜因NAT模式配置问题崩溃,也见证过安全工程师因选错网络模式导致测试环境暴露。…...
CCM实战调校:从原理到精准色彩还原
1. 色彩校正矩阵(CCM)的核心原理 色彩校正矩阵(CCM)是图像处理流水线中一个关键的数学工具,它的主要作用是修正相机传感器捕获的颜色与实际场景颜色之间的偏差。想象一下,你用手机拍了一张草莓的照片&…...
Dify自定义工具服务开发指南:独立部署与AI应用扩展实践
1. 项目概述:一个为Dify打造的定制化工具服务最近在折腾AI应用开发平台Dify时,发现虽然它内置的工具(Tools)生态已经挺丰富了,但总有些特定场景下的需求,比如调用一个内部审批系统、查询某个私有数据库的特…...
告别云服务器:手把手教你用QEMU在Ubuntu 18.04上搭建专属内核调试环境
从零构建QEMU内核调试环境:Ubuntu 18.04下的UEFI开发实战手册 当深夜的调试灯亮起,你是否还在为云服务器高昂的费用和网络延迟苦恼?本文将带你用一台普通Ubuntu机器,打造媲美物理机的内核开发环境。不同于常规教程,我…...
EdgeDB终极性能优化指南:5个关键磁盘IO配置大幅提升数据读写速度 [特殊字符]
EdgeDB终极性能优化指南:5个关键磁盘IO配置大幅提升数据读写速度 🚀 【免费下载链接】edgedb Gel supercharges Postgres with a modern data model, graph queries, Auth & AI solutions, and much more. 项目地址: https://gitcode.com/gh_mirro…...
RHClaw红队工具集:模块化CLI框架提升安全研究效率
1. 项目概述与核心价值最近在和一些做安全研究的朋友交流时,发现一个挺有意思的现象:大家手里或多或少都攒了一些自己写的、或者从开源社区淘来的“小工具”。这些工具往往功能单一但极其锋利,比如一个专门用来解析特定协议头的脚本ÿ…...
ERP生产模块设计:从BOM到完工
一、基础数据:BOM与工艺路线生产模块的核心是BOM(物料清单)和工艺路线。这两个搞不清楚,生产计划无从谈起。1. BOM表结构CREATE TABLE bd_bom (id BIGINT PRIMARY KEY AUTO_INCREMENT,bom_no VARCHAR(30) NOT NULL UNIQUE,materia…...
