Python【方法和返回值(Union)联合类型】注解

news2024/11/16 15:52:20

什么是类型注解:供调用者在使用函数(方法)时,如果没有完善的文档作为参考,开发者不知道要给定义的【变量、方法中的函数、】传入什么数据类型,以免减少编译错误。有了类型注解可以让 IDE 知道了数据类型后,更加准确地进行自动补全。

方法中的函数:

def func(data):
    return data * data
func()  #编译器只会提示需要传入一个实参,并不会告诉你该传入何种数据类型

如果是python的内置函数random,它就会提示你传入几个参数,出入那一种数据类型 

import  random
random.randint()  #生成一个随机数 需要传入起始值和边界值但不包括边界值

 

自定义函数就不会有这种特殊的待遇,因为python内置函数在封装的时候都已经注释在里面了,因此为更加精准的传入数据,减少错误,我们需要对自定义的函数和变量自己进行注释。

变量的注释方法:

语法1:  变量: 类型      注释前: funck = 10  注释后: funck:int = 10         常用注释方式

语法2: # type: 类型    注释前: funck = 10  注释后: funck = 10  # type:int    在注释中进行类型注释  

函数 和 返回值 的注释语法:

 函数 :def 函数名(形参:数据类型

 返回值:def 函数名(形参:数据类型-> 数据类型     

函数中类型注释:

def add(x:int,y:int):
    return x + y
add()   #提示我们传入两个参数,并且第一个参数和第二个参数都是整形 (int)

返回值注释:

语法: -> 数据类型

注释前 : 只给自定义函数的形参作了类型注解

def func (x:list[int])   """list[int] 表示给形参x,传入数据时,数据类型是一个列表,列表中的元素是 int 整形"""
    return x

注释后:给定义的函数形参 和返回值都做了类型注解

def func (x:list[int])  -> int:   
    return x

使用Union进行联合类型注解 :

语法: 第一步: 导入 Union 包           from typing import union

第二步:联合注解  my_list: 整体数据类型[union[元素数据类型1,元素数据类型2....,元素数据类型n]]

使用场景: 变量中的参数,需要多种数据类型   

案例释义:  my_list = [1,"csdn",3.1455]    #变量的列表中出现了,三种数据类型。

用以前 my_list:int:str:float = [1,"csdn",3.1455]  这样注释肯定不行

所以正确的是:  my_list:list[int,str,float] = [1,"csdn",3.1455]

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

函数 和 返回值中使用union 联合注解:

def add(data:Union[float,int]) -> Union[float,int]:
    return data

-> union[float,int] 这一段指的是返回值 return data中返回的data的数据类型中存有float,int

这里有一个 bug 关于 union 导入会出现问题 

 目前我通过pip命令下载 typeing 和 union 第三方库,但是问题好像没有被解决掉。

 原因是因为: 第三方库 Union 中 的 U是大写的U,我写成了union 所以不能识别 typeing 中没有union 小写这个方法,有的是大写U的 Union。

有一位【CSDN】的作者也解决了在导入Union函数时报错的问题,我把作者的作品Url:

放置如下。

http://t.csdn.cn/2ij9q  

总结: 【论语二则】

君子之过也,如日月之食焉。过也,人皆见之;更也,人皆仰之。

不患人之不知己,患不知人也。

不必担心别人不知道自己,时刻警惕着记好别人。

寓意儒学中蕴含做人的基本原则,谦逊谨慎坦诚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++语法2——for、while、do-while的语法及区别

C语言语法1详情请看这两篇博客:(此号为本人小号) 四则运算及基本语法 数据类型 接下来要讲得是循环语句 for循环 基本语法: for(表达式1;表达式2;表达式3) {内嵌语句; }执行顺序:…

js如何计算年龄?如何创建Javascript 年龄计算器?

如何创建年龄计算器? 要构建这个项目,我们需要HTML,CSS和Javascript。 让我们来看看这个项目是如何工作的。项目由输入日期组成。用户必须单击它并选择他们的出生日期或任何所需的日期。在此之后,用户必须单击计算按钮。用户单击计算按钮后,我们会根据他们输入的日期(…

深入理解ConcurrentLinkedQueue源码

1. 概述 在我们的日常开发中,经常会使用队列这种数据结构,需要它的队尾进、队头出的特点。于是,Doug Lea大师设计了一个线程安全的队列ConcurrentLinkedQueue,它是采用链表的形式构成的。我们接下来尝试通过代码去了解其中的设计…

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法

S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法 当现场的模拟量信号波动太大,而通过硬件的方式尚无法实现平稳的信号输入时,可采用软件上的滤波进行信号处理, 本次和大家分享的即通过取多个信号值的平均值的方式实现模拟量滤波的具体方法示例,仅供大家参考…

DataNode节点下线速度优化

目录 一、节点掉线或退役 1.1区分节点掉线和节点退役的区别 1.2 如何处理节点掉线出现的各种风暴 1.2.1 Datanode的block复制 1.2.2 控制节点掉线RPC风暴的参数 二、如何快速节点下线 一、节点掉线或退役 背景:5台数据节点,存储40T数据 block数112…

高等数学(上) —— 一元积分学

文章目录Ch4.不定积分原函数F(x)F(x)F(x)原函数存在定理不定积分∫f(x)dx\int f(x)dx∫f(x)dx不定积分公式不定积分 ⇦⇨ 变上限积分:∫f(x)dx∫0xf(t)dt\int f(x){\rm d}x\int_0^xf(t){\rm d}t∫f(x)dx∫0x​f(t)dtCh5.定积分1.定积分定义定积分的几何意义2.定积分…

ESP32的python开发环境搭建:Thonny+MicroPython

1 Thonny安装 Thonny —— 一个面向初学者的 Python IDE。Thonny良好的支持Microbit、ESP32和树莓派等的开发. 安装下载地址: https://thonny.org/ 2 Micropython安装 MicroPython 是 Python 3 语言的精简实现 ,包括Python标准库的一小部分&#xff0…

Vector - VT System - 板卡_VT8006/VT8012

由于最近不幸变为了小*人,因此断更了一周,今天稍有好转,就新加一块大家应该会比较感兴趣的VT板卡硬件介绍吧,也预示着新的开始,马上也要到了元旦,新的一年即将开始,提前在这里祝福大家在新的一年…

JavaPub面试宝典【第22版】

JavaPub面试宝典【第22版】 直接上干货,几百篇原创笔记都在这。 文章列表 📚最少必要面试题 Java基础Java并发入门Java容器JavaWebJVMMySQLMyBatisSpringSpringBootRedisElasticSearchKafkaZookeeperDocker缓存 📖知识点总结 下面是原创…

linux 下命令

linux 下命令 Linux 是一套免费使用和自 由传播的类 Unix 操作系统, 是一个基于 POSIX 和 UNIX 的多用户、 多任务、 支持多线程和多 CPU 的操作系统。 它能运行主要的 UNIX 工具软件、 应用程序和网络协议。 它支持 32 位和 64 位硬件。 Linux 继承了 Unix 以网络为…

uniCloud云开发----4、uniCloud云开发进阶使用方法

uniCloud云开发进阶使用方法前言1、云对象的importObject的创建和使用(1)创建云对象(2)编辑云对象(3)在.vue文件中调用云对象(4)在.vue文件中调用方法2、客户端直接连接数据库(1)直接在客户端引…

设计模式-牛刀小试02

前言 本文为datawhale2022年12月组队学习《大话设计模式》最后一次打卡任务,本次完成homework2。 【教程地址】https://github.com/datawhalechina/sweetalk-design-pattern 一、任务描述 1.1 背景 小李已经是一个工作一年的初级工程师了,他所在的公…

sqlite wal 分析

动手点关注干货不迷路sqlite 提供了一种 redo log 型事务实现,支持读写的并发,见 write-ahead log(https://sqlite.org/wal.html)。本文将介绍 wal 原理,并源码剖析 checkpoint 过程,同时讨论下 wal 使用中…

知行之桥EDI系统如何通过ZIP端口压缩文件?

在EDI项目当中,对于IT技术不够成熟或设备不够完善的用户来说,EXCEL方案是较为适中的选择。收到合作伙伴发来的850订单之后,将订单数据转换为EXCEL,再将EXCEL发送至用户指定的邮箱。若每条订单单独发送至邮箱,当订单量大…

#榜样的力量#《新冠战“疫”——2022中国数据智能产业最具社会责任感企业》榜正式发布...

‍数据猿出品数据猿此次推出的#榜样的力量#《新冠战“疫”——2022中国数据智能产业最具社会责任感企业》榜单/奖项为公益主题策划活动。旨在为正能量助威,为中国数据智能产业中具有社会责任感的典型性企业发声。数据智能产业创新服务媒体——聚焦数智 改变商业新冠…

66、【链表】leetcode——142. 环形链表 II(C++、Python版本)

题目描述 方法一:哈希表 C版本 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detectCycle(ListNode *head) {unord…

年终小结:苟住

大家好,我是一哥,新的一年又要到来了,一个词总结下今年的状态 01 工作 2022真的比较难,作为互联网技能从业人员,相信大家一定经历了很多。这一年虽然我没有被毕业,但也经历了公司的业务调整,曾…

C51 --串口通信

3.2.1 串口的连接方式 RXD:数据输入引脚,接受数据;STC89系列对应P3.0口,上官一号有单独引出 TXD: 数据发送引脚,数据发送;STC89系列对应P3.0口,上官一号有单独引出 接线方式&…

2022 IoTDB Summit:IoTDB PMC 田原《大规模并行处理与边缘计算在 Apache IoTDB 中的实践》...

12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…

带头双向循环链表的增删改查

目录🤡前言😊带头双向循环链表👍链表实现😠插入-头插,尾插,随机插✅删除-头删,尾删,随机删😂链表搜索和链表修改💡总结🤡前言 本篇博客主要是介绍…