Python类型注解(十)

news2024/11/24 17:50:39

python学习之旅(十)
👍查看更多可以关注查看首页或点击下方专栏目录

一.为什么需要类型注解

在代码中提供数据类型的注解(显式的说明),使用时能获得相关提示

  • 帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
    在这里插入图片描述

    • 显示声明时,pycharm确定这个对象是list类型,使用时能有对应提示
      请添加图片描述

    • 没有声明具体类型时,使用不会有任何相关提示
      在这里插入图片描述

  • 帮助开发者自身对变量进行类型注释(备注),后面调用不易出错


二.变量的类型注解

提示变量的数据类型

在这里插入图片描述

(1) 语法格式

变量名: 数据类型 = 数值
  • 注:
    • Python中类型注解仅仅起到提示作用,没有其他语言那么严格
    • Python解释器不会根据类型注解对数值做验证和判断,无法对应上也不会导致错误

(2) 基础类型

  • 整数类型注解
var_1: int = 1314 
  • 浮点数类型注解
var_2: float = 5.21 
  • 布尔类型注解
var_3: bool = True  
  • 字符串类型注解
var_4: str = "hhybd"  

(3) 类对象

# 定义学生类
class Student:
    pass

stu: Student = Student()  # 学生类类型注解

(4) 数据容器

  • 列表类型注解

    • 方式一:
    my_list: list = [1, 2, 3]
    
    • 方式二,list[基础类型]:
    my_list: list[int] = [1, 2, 3]
    
  • 元组类型注解

    • 方式一:
    my_tuple: tuple = (1, 2, 3)
    
    • 方式二,元组类型需要将每一个元素都标记出来:
    my_tuple: tuple[str, int, bool] = ("bd", 521, True)
    
  • 集合类型注解

    • 方式一:
    my_set: set = {1, 2, 3}
    
    • 方式二,set[基础类型]
    my_set: set[int] = {1, 2, 3}
    
  • 字典类型注解

    • 方式一:
    my_dict: dict = {"hhbdy": 250}
    
    • 方式二,dict[键类型,值类型]
    my_dict: dict[str, int] = {"hhbdy": 250}
    
  • 字符串类型注解

my_str: str = "hhybd"

(5) 其他语法格式

  • 在注释中进行类型注解
  • 语法格式:
# type:类型
  • 使用示例:
stu = Student()  # type:Student
var_1 = 123  # type:int
my_list = [1, 2, 3]  # type:list
my_set = {1, 2, 3}  # type:set[int]

三.函数(方法)的类型注解

标注形参和返回值数据类型

  • 类型注解仅仅起到提示作用

(1) 形参注解

在这里插入图片描述

  • 语法格式:
def 函数方法名(形参名1:类型,形参名2:类型):
	函数体
  • 使用示例:
    在这里插入图片描述

(2) 返回值注解

  • 语法格式:
def 函数方法名(形参名1:类型,形参名2:类型) -> 返回值类型:
	函数体
  • 使用示例:
def add(x: int, y: int) -> int:
    return x + y

四.Union类型

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

  • 需要导包使用

  • 当数据类型不唯一时基本格式无法满足要求,此时便可使用Union类型

  • 使用示例,Union[类型,类型]

    • 在变量中:
    from typing import Union
    # 数据为字符串和整数
    my_list: list[Union[str, int]] = [2, "hhy", 5, "bd", 0]
    # 键为字符串,值为字符串和整数
    my_dict: dict[str, Union[str, int]] = {"name": "hhy", "QS": 250}
    
    • 在函数中:
    from typing import Union
    
    # 接收字符串或整数,返回字符串或整数
    def func(data: Union[int, str]) -> Union[int, str]:
        pass
    

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

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

相关文章

想从事网络信息安全的工作,该如何自学?

前言 【一一帮助网络安全入门和提升学习点这里一一】 由于我之前写了不少网络安全技术相关的文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人私信问我: 我刚入门网络安全,该怎么学?要学哪些东西&#…

第56篇-利用jsRpc获取某博的登录参数

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、JsRpc的基本使用1.准备工作2.简单使用三、使用jsRpc获取微博登录参数1.网站分析2.构建rpc一、前言 以前使用…

记录 一次 小米路由器4C 刷openwrt 过程

前言 起因是4C的性能不太行,用久了网络也不稳定,且100M带宽跑不满,然后就换了路由器,闲置的这个准备哪来跑个Linux挂个bot来着,结果可好,刷完发现内存小的可怜呀,架构也不是主流的(…

低代码助力工业软件发展,提升智能制造“软”实力

在《“十四五”智能制造发展规划》中,将工业软件作为加强自主供给的一个重点任务进行单独部署,强调了工业软件的工业属性,明确了工业软件对于智能制造的核心支撑作用,凸显了我国补足工业软件短板、以工业软件助推智能制造发展的决…

跨境资讯 | 亚马逊三站点将更新供应链标准,1月19日生效

让我们一起来看看今日都有哪些新鲜事吧!01 亚马逊将更新供应链标准 亚马逊美国站、欧洲站和日本站发布公告称2023年1月19日将更新供应链标准,在亚马逊销售的产品必须符合这些新标准。作为定期审查的一部分,这些标准每三年更新一次。亚马逊表…

虹科案例 | 解决ASRS系统的痛点问题居然这么简单?(下)

ASRS中的定位器 在考虑传感技术时,重要的是每种技术都能够以最高程度的重复性和精确度保持绝对分量,并非所有的方法都是一样托盘梭子和立式起重机在任何时候都要求绝对位置。 托盘梭子: 过道位置 行位置 垂直起重机: 高度 线性…

Java中解决lambda表达式内部访问在其外部定义的变量-使用mapToInt

场景 Java8新特性-Stream对集合进行操作的常用API: Java8新特性-Stream对集合进行操作的常用API_霸道流氓气质的博客-CSDN博客_streamapi对集合修改 上面介绍Stream的相关使用示例。 如果遇到在lambda表达式内部访问在其外部定义的变量,比如一个求和…

MATLAB-surf/ezsurf函数绘制三维图形

(1)surf 函数的用法和 mesh函数类似,MATLAB中 surf函数专门用于绘制三维着色曲面图和 surfc是通过矩形区域来观测数学函数的函数。surf和 surfc能够产生由X、Y、Z指定的有色参数化曲面,即三维有色图。具体调用方法如下。1、surf(Z…

JDBC数据库连接

下载jdbc jar包,中央仓库下载https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.24项目导入右键jar包,然后add as library数据库操作3.1连接数据库package com.heima.jdbc;import java.sql.Connection; import java.sql.DriverManager…

Appium自动化测试环境搭建

Appium自动化环境搭建 首先整体了解一下Appium自动化环境搭建都需要哪些软件或者组件 Python、Appium、AndroidSDK(主要是adb.exe、aapt.exe)、Node Js、java 一、安装并配置java环境 1、这个可以搜到的教程实在是太多了,建议直接官方下载…

汽车数据分析,2022年汽车产量总体高于2021年,年产量增长了6%左右

哈喽,大家好,春节将近,想必大家也开始抢票准备回家过年了,有车的伙伴也可能打算自驾归家了。大家辛苦工作了一年,手里积攒了一些积蓄,有些伙伴可能想赶在春节购车购房,这里小编为大家准备了一些…

java面试之设计篇

一、基础 1.六大设计原则 单一职责原则 一个类只专注于做一件事;高内聚,低耦合; 开闭原则 对拓展开放,对修改关闭(尽可能不动原有代码进行拓展); 高内聚,低耦合; 为达到…

电力系统|基于分布式高斯-牛顿方法结合置信传播 (BP) 的概率推理方法的非线性状态估计 (SE) 模型(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文&…

新考纲下的PMP考试有多难?

一,2022新考纲PMP考试有多难? PMP考试被认为是最难的项目管理考试之一,主要是因为其庞大的教学大纲、所需的投入的精力、所问问题的类型和长度、考试时间和答案选择。它测试候选人对项目管理技能和耐心水平的深入了解。这并不意味着不可能通…

舆情监测是什么技术,网络舆情监测技术操作规范?

网络舆情监测是对互联网上公众的言论和观点进行监视和预测的行为,随着互联网的发展,舆情监测已经是企业日常重要工作,对于企业来说是非常重要的,接下来TOOM舆情监测带您了解舆情监测是什么技术,网络舆情监测技术操作规…

基于Python卷积神经网络的动物识别系统源码,动物检测系统源码,宠物识别系统源码

毕设系列-基于卷积神经网络的动物识别系统 完整代码下载地址:基于Python卷积神经网络的动物识别系统源码 上期评论区有好兄弟留言想看动物检测系统,那咱们这期检测系列就更新动物检测系统,并且在之前功能的基础之上添加了计数的功能&#x…

SD3403/SS928V100 移植Yolo模型

1.前言参考的文档名称为《驱动和开发环境安装指南》,首先安装Ubuntu18.04 系统,这次为了方便起见重新做了一个虚拟机,也建议这样做,因为装的很多软件都有版本的要求,避免版本更改导致的别的软件不能运行,单…

ThinkPHP5漏洞分析之SQL注入(七)

说明 该文章来源于同事lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/ 文章目录说明0x00 从?s是个啥开始0x01 模型/控制器/方法的处理0x02 漏洞原因0x03 参数的获取?参考链接:Mochazz/ThinkPHP-Vuln/ 影响版本&am…

ThinkPHP5之文件包含审计分析(六)

说明 该文章来源于同事lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/ 文章目录说明method方法调用链:程序启动时:后门技巧利用method的任意方法调用,调用构造函数__construct,且调用时会传…

同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航

同盾科技是中国领先的人工智能科技企业。为了确保服务的低延迟和高可用性,同盾的技术团队不断寻找最佳的技术架构。经过长时间调研,他们最终选择了新一代分布式数据库 TiDB 作为离线层的核心数据库,基于 TiDB 打造的实时数据架构为风控智能决…