【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )

文章目录

  • 一、使用 注释语法 设置 类型注解
    • 1、使用 注释语法 设置 类型注解语法介绍
    • 2、为 基础类型变量 设置 " 类型注解 "
    • 3、为 类 的 对象类型 设置 " 类型注解 "
    • 4、为 基础容器类型变量 设置 简易 " 类型注解 "
    • 5、为 基础容器类型变量 设置 详细 " 类型注解 "
    • 6、完整代码示例
  • 二、类型注解没有强制性





一、使用 注释语法 设置 类型注解




1、使用 注释语法 设置 类型注解语法介绍


除了使用 变量: 类型 的语法格式 设置 类型注解 之外 ,

还可以 使用 注释语法 为 Python 变量 设置 类型注解 , 语法如下 :

# type: 类型名称

类型注解 不是 强制性的 , 只是提示性的 ;

不按照 类型注解进行 赋值 , 代码也不会报错 ;


2、为 基础类型变量 设置 " 类型注解 "


为 基础类型变量 设置 " 类型注解 " :

# 1. 为 基础类型变量 设置 " 类型注解 "
var_int = 10                                # type: int
var_float = 3.14                            # type: float
var_bool = True                             # type: bool
var_str = "Tom"                             # type: str

3、为 类 的 对象类型 设置 " 类型注解 "


为 类 的 对象类型变量 设置 " 类型注解 " :

# 2. 为 类 的 对象类型变量 设置 " 类型注解 "
class Student:passs = Student()                               # type: Student

4、为 基础容器类型变量 设置 简易 " 类型注解 "


为 基础容器类型变量 设置 简易 " 类型注解 " :

# 3. 为 基础容器类型变量 设置 简易 " 类型注解 "
var_list = [1, 2, 3]                        # type: list
var_tuple = (1, 2, 3)                       # type: tuple
var_set = {1, 2, 3}                         # type: set
var_dict = {"Tom": 18, "Jerry": 12, }       # type: dict
var_str = "China"                           # type: str

5、为 基础容器类型变量 设置 详细 " 类型注解 "


为 基础容器类型变量 设置 详细 " 类型注解 " :

# 4. 为 基础容器类型变量 设置 详细 " 类型注解 "
var_list_2 = [1, 2, 3]                      # type: list[int]
var_tuple_2 = (1, True)                     # type: tuple[int, bool]
var_set_2 = {1, 2, 3}                       # type: set[int]
var_dict_2 = {"Tom": 18, "Jerry": 12, }     # type: dict[str, int]

列表 数据容器类型 的 详细 类型注解 , 只需要设置一个元素类型即可 ;

  • list[int] 列表类型 , 列表的元素类型为 int 类型 ;

元组 数据容器类型 的 详细 类型注解 , 需要为每个元素都进行类型标记 , 有几个元素就要标记几个类型 ;

  • tuple[int, bool] 元组类型 , 第一个元素类型是 int 数字类型 , 第二个元素类型是 bool 布尔类型 ;

字典 数据容器类型 的 详细 类型注解 , 需要设置两个类型 , 第一个类型是 键值对 中的 键 Key 的类型 , 第二个类型是 键值对 中的 值 Value 的类型 ;

  • dict[str, int] 字段类型 , 键 Key 的类型是 str 字符串类型 , 值 Value 的类型为 int 数字类型 ;

6、完整代码示例


类型注解 完整代码示例 :

"""
类型注解 代码示例
"""# 1. 为 基础类型变量 设置 " 类型注解 "
var_int = 10                                # type: int
var_float = 3.14                            # type: float
var_bool = True                             # type: bool
var_str = "Tom"                             # type: str# 2. 为 类 的 对象类型变量 设置 " 类型注解 "
class Student:passs = Student()                               # type: Student# 3. 为 基础容器类型变量 设置 简易 " 类型注解 "
var_list = [1, 2, 3]                        # type: list
var_tuple = (1, 2, 3)                       # type: tuple
var_set = {1, 2, 3}                         # type: set
var_dict = {"Tom": 18, "Jerry": 12, }       # type: dict
var_str = "China"                           # type: str# 4. 为 基础容器类型变量 设置 详细 " 类型注解 "
var_list_2 = [1, 2, 3]                      # type: list[int]
var_tuple_2 = (1, True)                     # type: tuple[int, bool]
var_set_2 = {1, 2, 3}                       # type: set[int]
var_dict_2 = {"Tom": 18, "Jerry": 12, }     # type: dict[str, int]

执行结果 :

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.pyProcess finished with exit code 0

在这里插入图片描述





二、类型注解没有强制性



类型注解 不是 强制性的 , 只是提示性的 ;

不按照 类型注解进行 赋值 , 代码也不会报错 ;


下面的代码中 , 通过两种方式 为 变量设置了 int 类型的 类型注解 , 但是为其设置了 字符串类型的变量值 , 最终执行也没有报错 ;


代码示例 :

"""
类型注解 代码示例
"""# 使用 变量: 类型 设置类型注解
var_jerry: int = "Jerry"
print(var_jerry)# 使用 type: 类型 注释设置类型注解
var_tom = "Tom"                                # type: int
print(var_tom)

执行结果 :

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
Jerry
TomProcess finished with exit code 0

警告情况 : 没有报错 , 但是报了一条警告信息 ;

Expected type 'int', got 'str' instead

在这里插入图片描述

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

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

相关文章

基于深度学习的高精度工人安全帽检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度工人安全帽检测识别系统可用于日常生活中或野外来检测与定位工人安全帽目标,利用深度学习算法可实现图片、视频、摄像头等方式的工人安全帽目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用…

Windows与Linux取证分析

目录 一、电子数据取证基本概念 1.电子取证学 2.常规取证 3.洛卡德物质交换原理 4.电子数据范围 5.电子数据取证的概念和目的 6.电子数据取证过程 二、Linux系统取证 1.基本信息获取 (1)获取系统基础信息 (2)用户/用户…

共筑开源新长城 龙蜥社区走进开放原子校源行-清华大学站

6 月 28 日,以“聚缘于校,开源共行”为主题的 2023 年开放原子校源行活动在清华大学成功举行。本次活动由开放原子开源基金会和清华大学共同主办,来自各行业的 22 位大咖共聚校园共话开源。龙蜥社区技术专家边子政受邀进行技术分享&#xff0…

UWB天线设计之一种优化扁平超宽带单极的新方法

文章亮点 一种新颖的方法提出了扁平超宽带单极天线。 通过应用收缩,可以设计具有相同性能的更小的天线作为平面单极天线。 优化结果表明该方法能够设计非常小的天线。 在这项研究中,提出了一种优化扁平超宽带单极天线的新方法。在该方法中,一般性地描述了天线的形状。这种一…

LeetCode141.环形链表

141.环形链表 目录 141.环形链表一、哈希表二、双指针 一、哈希表 最容易想到的方法就是遍历所有节点,每次遍历到一个节点的时候,判断该节点此前是否被访问过 我们可以使用哈希表来存储所有已经访问过的节点 每次到达一个节点,如果该节点已…

Web3时代来临:你准备好了吗?

如果你正在浏览本文,那么很可能你已经是Web3时代的一部分了,或者至少是将要成为其中的一员。因为Web3时代即将来临,它将彻底改变我们对互联网的认识和使用方式。 那么,什么是Web3时代呢?简单来说,它是指基于…

JPA实现多对多关系

本文已收录于专栏 《Java》 目录 概念说明优势利弊实现方式通过两个ManyToMany注解实现类图代码 通过OneToMany和ManyToOne注解实现类图代码 少走弯路总结提升 概念说明 多对多关系是指两个实体之间存在多对多的关联关系。在数据库中,多对多关系无法直接表示&#x…

【树链+EXGCD】杭电多校第一场 A

1001 Hide-And-Seek Game (hdu.edu.cn) 题意: 给定一棵树和两条路径,每条路径都有起点和终点,起始时起点有人,每隔一秒都会往终点走一步,会从起点走向终点再会起点这样不断地周期性地走,让你求一点&#…

UDP-组播,广播

转自:https://www.cnblogs.com/wangzhilei-src/p/15314315.html UDP是面向非连接的协议,它不与对方建立连接,而是直接把数据报发给对方。UDP无需建立类如三次握手的连接,使得通信效率很高。因此UDP适用于一次传输数据量很少、对可…

STM32 HAL库定时器输入捕获SlaveMode脉宽测量

STM32 HAL库定时器输入捕获SlaveMode脉宽测量 SlaveMode模式简介 ✨SlaveMode复位模式:在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同时,如果TIMx_CR1寄存器的URS位为低,还会产生一个更新事件UEV…

Android TextView 在最后一行末尾加图标

当前有个需求.显示一段文本,文本最多显示两行,点击展开后才显示完全。当没有显示完全的时候,需要在文本的第二行末尾显示图标,点击图标和文本,文本展开。难点在于图标需要和第二行文本显示在同一行,高度和文…

windows10 搭建hadoop环境,并且使用hadoop命令

hadoop 环境创建 1. 八、window搭建spark IDEA开发环境 按照步骤安装完 2. windows下安装和配置hadoop 配置环境变量,注意JAVA_HOME路径,修改后,重启电脑,不重启容易报错!!! ​ 新建dat…

【量化课程】02_1.宏观经济学基础概念

2.1_宏观经济学基础概念 文章目录 2.1_宏观经济学基础概念1. 宏观经济简单背景1.1 微观经济学时期1.2 宏观经济学开端1.3 宏观经济学研究的问题1.4 宏观经济与理财的联系 2. 宏观经济分析及关键指标2.1 教材中的宏观经济分析框架和指标2.1.1 国内生产总值GDP2.1.2 边际消费倾向…

Non-Local Video Denoising by CNN

摘要 Non-local patch based methods were until recently state-of-the-art for image denoising but are now outper formed by CNNs. Y et they are still the state-of-the-art for video denoising, as video redundancy is a key factor to attain high denoising perfor…

远程大文件传输工具该怎么选择?

随着网络技术的不断进步,越来越多的人需要在不同地点之间传输文件。这时候,我们便需要使用远程文件传输工具。 1、什么是远程文件传输工具呢? 简单来说,它是一种能够帮助我们在不同设备之间传输文件的工具。通常情况下&#xff0…

【云原生】k8s图形化管理工具之rancher

前言 在前面的k8s基础学习中,我们学习了各种资源的搭配运用,以及命令行,声明式文件创建。这些都是为了k8s管理员体会k8s的框架,内容基础。在真正的生产环境中,大部分的公司还是会选用图形化管理工具来管理k8s集群&…

第八十五天学习记录:C++核心:内存分区模型

内存分区模型 C程序在执行时,将内存大方向划分为4个区域 1、代码区:存放函数体的二进制代码,由操作系统进行管理 2、全局区:存放全局变量和静态变量以及常量 3、栈区:由编译器自动分配释放,存放函数的参数…

【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

前言 大家好,我是秋意零。 在上一篇中,我们讲解了 StatefulSet 的拓扑状态;我们发现,它的拓扑状态,就是顺序启动/删除、Pod 名称编号命名、将 Pod 名称设为 Hostname 名称、通过 Service 无头服务的 DNS 记录访问。 …

【iOS】—— 编译链接

【iOS】—— 编译链接 文章目录 【iOS】—— 编译链接编译流程预处理(预编译Prepressing)编译(Compilation)汇编(Assembly)链接(Linking) 编译流程 编译流程分为四步 预处理&#…

使用Vue + FormData + axios实现图片上传功能实战

前言 上节回顾 上一小节中,我们添加了Vue-router的路有数据,这些数据都将是后续实战课程中的真实路由数据了。同时引入了ElementUI的el-menu做为左侧菜单的组件,但本专栏的特点就是遇到第三方功能和组件,自己尽量也要实现一遍,所以,在文章末尾又自己实现了一个tg-menu的…