Python语言学习笔记之五(Python代码注解)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。

注解与注释是不一样的,注解有更广泛的应用;

通过注解与注释都能提高代码的可读性和规范性;注释是针对代码进行说明;

1、什么Python的注解

 注解就是在Python中是一利元数据机制用于在代码中添加额外的信息,这些注解可以用于类型检查、函数参数、返回值等注解,在Python中通常与类型提示一起使用,以提供关于变量、参数和返回值的预期类型信息。

Python的元数据机制是指用于组织、管理和存储元数据的模型。在Pvthon中,元数据通常指的是描述数据的信息。这包括数据的类型、值的范围、来源以及其他属性的描述,通过使用注解,可以增加代码的可谈性,可维护性和可靠性,虽然注解不会直接影响函数的运行、但在代码文档化和类型检查方面发挥着重要的作用。

2、如何使用注解

在Python中,注解通常使用冒号(:)来分隔表达式和类型,例如,在类方法定义中,可以使用注解来指定参数的类型和返回值的类型,如下所示:

参数类型注解:

定义了一个名为Greeter的类,其中包含一个名为greet的方法,该方法接受一个字符串类型的参数name,并返回一个字符串类型的值。我们使用注解来指定参数和返回值的类型。这个注解告诉Python解释器,name参数应该是一个字符串类型,返回值也是个字符串类型。

变量类型的注解案例:

我们定义了一个名为Person的类,该类包含两个属性: name、age。我们使用注解来指定属性的类型,分别是字符串类型和整数类型。在类定义下方,我们创建了一个Person类的实例,并分别给name和age属性赋值,最后,我们分别打印出这两个属性的值。

函数返回值类型注解:

定义了一个名为get users的函数,该函数不接受任何参数,但是需要使用注解来指定返回值的类型,我们导人了typing模块中的List类型,并将返回值指定为字符串类型的列表,函数内部定义了一个字符串类型的列表users,然后将其作为返回值返回,在函数定义下方,我们调用了该函数,并将返回值打印出来。

​​​​​​​3、Python注解注意事项

       在Python中类型注解只是一种提示,并不会在运行时强制执行类型检查,类型注解主要用于静态类型检查和代码可读性。需要注意的是:Python 的注解并不在运行时强制执行类型检查,因此,上述错误并不会导致程序崩溃或无法运行。然而,在静态类型检查中,这样的错误会被检测出来并引发警告或错误。

​​​​​​​4、代码注解的优势

Python 是一种动态类型语言,它允许在运行时改变变量的类型,尽管在运行时没有强制类型检查,但使用类型注解还有其他一些好处:

优势一:通过在代码中明确指定变量的类型和函数的参数类型和返回类型,可以使代码更具可读性。这对于其他开发人员以及个人将来回顾代码时都很有帮助

优势二:如果使用静态类型检查工具(如 mypy),它们会在编译时执行类型检查,并提示潜在的类型错误,这样就可以在开发阶段发现潜在的问题,而无需等到运行时。

优势三:某些工具和库可能要求或支持类型注解。如果在代码中使用注解,可以与这些工具和库更好地兼容

Python注解虽然不是强制性的,但是可以带来很多好处,特别是在大型的软件开发项目中,能够提高代码的可读性和可维护性的错误和缺陷。

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

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

相关文章

RabbitMQ消息模型之Work Queues

Work Queues Work Queues,也被称为(Task Queues),任务模型,也是官网给出的第二个模型,使用的交换机类型是直连direct,也是默认的交换机类型。当消息处理比较耗时的时候,可能生产消息…

Altium Designer学习笔记8

创建原理图元件: 画出原理图: 根据规则书画出原理图: 根据规则书画出封装图: 参照: 确认下过孔的内径和外径的最小允许值。

GoLang切片

一、切片基础 1、切片的定义 切片(Slice)是一个拥有相同类型元素的可变长度的序列它是基于数组类型做的一层封装它非常灵活,支持自动扩容切片是一个引用类型,它的内部结构包含地址、长度和容量声明切片类型的基本语法如下&#…

关于图像识别,你不得不知的三大要点

图像识别的重要性 图像识别不仅可以加速处理繁琐的任务,而且还可以比人工图像检查更快速或更准确地处理图像。图像识别是应用于诸多领域的关键技术,也是深度学习应用的主要驱动因素,如: 视觉检查:在制造过程中识别零部…

初刷leetcode题目(11)——数据结构与算法

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

Linux:创建进程 -- fork,到底是什么?

相信大家在初学进程时,对fork函数创建进程一定会有很多的困惑,比如: 1.fork做了什么事情?? 2.为什么fork函数会有两个返回值?3.为什么fork的两个返回值,会给父进程谅回子进程pid,给子进程返回0?4.fork之后:父子进…

Unity 引擎宣布:自 2024 年起,开发者需支付费用!

Unity引擎宣布的新的收费模式,从2024年1月1日开始,根据游戏的安装量来对开发者进行收费。具体来说,每次游戏被下载时,UnityRuntime也会被安装,因此可能会产生额外的费用。对于开发者来说,需要注意以下几点&…

yml转properties工具

目前搜索到的大部分代码都存在以下问题: 复杂结构解析丢失解析后顺序错乱 所以自己写了一个,经过不充分测试,基本满足使用。可以直接在线使用 在线地址 除了yml和properties互转之外,还可以生成代码、sql转json等,可…

嵌入式Linux学习(2)——经典CAN介绍(上)

目录 一. CAN与ISO-OSI Model 二. CAN通信 2.1 接线方式 2.1.1 闭环网络 2.1.2 开环网络 2.2 收发流程 2.2.1 发送 2.2.2 接收 三. CAN BUS访问与仲裁 3.1 “线与”机制​ 3.2 仲裁机制 REF CAN(Controller Area Network)总线协议是由 BOSC…

【蓝桥杯选拔赛真题26】C++字符串逆序 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++字符串逆序 一、题目要求 1、编程实现 2、输入输出 二、算法分析

MySQL 中的锁(三)

8.7. 死锁和空间锁 一般来说,只要有并发和加锁这两种情况的共同加持下,都会有死锁的身影。 死锁的具体成因,借用我们在并发编程中的内容: 8.7.1. 死锁 8.7.1.1. 概念 是指两个或两个以上的进程在执行过程中,由于竞…

JSON.stringify方法详解 后端接受JSON数据格式

1、方法定义:JSON.stringify(value, replacer, space) 参数说明: value:js对象 replacer:替换对象,可以是一个方法、对象或数组,将value按照替换规则展示。 space:填充参数,可以是数…

Linux常用命令——rm 命令

文章目录 Linux系统中的rm命令是一个非常强大且危险的工具,用于删除文件和目录。由于其具有不可逆的特性,了解其参数和正确使用非常重要。 1. 基本用法 rm命令的基本格式是rm [选项] 文件或目录。不带任何选项时,rm命令仅删除文件。 示例&a…

数据结构-二叉树(2)

3.4堆的应用 3.4.1 堆排序 堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 1.升序:建大堆; 2.降序:建小堆。 2. 利用堆删除思想来进行排序 这种写法有两个缺点: 1、先有一个堆的数据结构 …

springboot整合websocket

websocket和传统http协议 http 概念 HTTP(Hypertext Transfer Protocol)是一种用于传输超文本数据的应用层协议。它是基于TCP/IP协议来传输数据的,是Web浏览器和Web服务器之间进行数据交换的标准协议。 HTTP协议的主要特点包括:…

JAVA小游戏“飞翔的小鸟”

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下: 代码如下: package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO; public class Bird { Image image; in…

YOLOv8改进实战 | 更换主干网络Backbone(六)之轻量化模型VanillaNet进阶篇

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

Linux(11):Linux 账号管理与 ACL 权限设定

Linux 的账号与群组 每个登入的使用者至少都会取得两个 ID,一个是使用者 ID(User ID ,简称UID)、一个是群组ID (Group ID ,简称GID)。 Linux系统上面的用户如果需要登入主机以取得 shell 的环境来工作时,他需要如何进行呢? 首先…

每日一题(LeetCode)----链表--链表中的下一个更大节点

每日一题(LeetCode)----链表–链表中的下一个更大节点 1.题目(1019. 链表中的下一个更大节点) 给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第…

Umi-OCR图片批量识别文字工具

OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/粘贴/批量导入图片,段落排版/排除水印,扫描/生成二维码。内置多国语言库。 项目地址:https://github.com/hiroi-sora/Umi-OCR