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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS3样式详解之圆角、阴影及变形

目录 前言一、圆角样式(border-radius)二、元素阴影(box-shadow)三、过渡动画样式(transition)1. transition-property(用于设置属性名称)2. transition-duration(设置时间)3. trans…

什么是requestIdleCallback?和requestAnimationFrame有什么区别?

什么是requestIdleCallback? 我们都知道React 16实现了新的调度策略(Fiber), 新的调度策略提到的异步、可中断,其实就是基于浏览器的 requestIdleCallback和requestAnimationFrame两个API。 在 JavaScript 中,requestIdleCallback 是一个用于执行回调函…

linux安装docker(脚本一键安装配置docker)

1、创建脚本 vi initDocker.sh #安装前先更新yum,防止连接镜像失败 yum -y update#卸载系统之前的docker(可选择,我这里直接注释了) #yum remove docker docker-client docker-client-latest docker-common docker-latest docke…

C#,数值计算——插值和外推,径向基函数插值(RBF_multiquadric)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class RBF_multiquadric : RBF_fn { private double r02 { get; set; } public RBF_multiquadric(double scale 1.0) { this.r02 Globals.SQR(scale); } publi…

PHP微信UI在线聊天系统源码 客服私有即时通讯系统 附安装教程

DuckChat是一套完整的私有即时通讯解决方案,包含服务器端程序和各种客户端程序(包括iOS、Android、PC等)。通过DuckChat,站点管理员可以快速在自己的服务器上建立私有的即时通讯服务,用户可以使用客户端连接至此服务器…

linux无网络 无ip,显示网络未连接

标题:linux无网络 无ip,显示网络未连接 参考blog:Linux无网络连接问题排查 首先我们发现ens33没有ip地址,说明这个接口并没有被分到ip; 我们可以通过手动方式来给ens33获得网络ip sudo dhclient ens33,之后再输入ifc…

视图层、模板(补充)

视图层 响应对象 响应---》本质都是 HttpResponse HttpResponse---》字符串render----》放个模板---》模板渲染是在后端完成 js代码是在客户端浏览器里执行的模板语法是在后端执行的redirect----》重定向 字符串参数不是是空的状态码是 3开头JsonResponse---》json格式数据 …

HTML-CSS知识速查

HTML/CSS知识速查 文章目录 HTML/CSS知识速查[toc]网页的组成浏览器**为什么需要Web标准:** **web标准的构成:**HTMLHTML语法导读**1.1 HTML语法规则:**1.2 基本结构标签**1.3 标签的关系:**1. **包含关系(Parent-Chil…

【洛谷算法题】P5716-月份天数【入门2分支结构】

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5716-月份天数【入门2分支结构】🌏题目描述🌏输入格式&a…

Swift 常用关键字

目录 一、数据类型 1. 流程控制 2. 访问控制 3. 功能修饰词 4. 错误处理 5. 泛型和类型 6. 其它关键字 二、部分关键字说明 1. guard 2. class 和 struct struct(结构体) class(类) 使用场景 3. mutating 4. proto…

java开发之基于个微群聊二次开发

请求URL: http://域名地址/getGroupQrCode 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId是String登录实例标识chatRoomI…

Image Super-Resolution with Text Prompt Diffusion

Image Super-Resolution with Text Prompt Diffusion (Paper reading) Zheng Chen, Shanghai Jiao Tong University, arXiv23, Code, Paper 1. 前言 受多模态方法和文本提示图像处理进步的启发,我们将文本提示引入图像SR,以提供退化先验。具体来说&am…

Mysql基础(六)多表查询

版权申明:本文用于个人学习记录,学习课程为黑马程序员的mysql教程。如需获取官方的学习视频和文档资料,请至黑马程序员官方获取。下面附上教学视频的链接地址,向提供免费教学视频的老师致敬,学如逆水行舟,不…

数据结构-02-链表

相比数组,链表是一种稍微复杂一点的数据结构。掌握起来也要比数组稍难一些。这两个非常基础、非常常用的数据结构。 1-链表结构 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个20MB大小的数组,当内存中没有连续的、…

最大熵模型

1. 最大熵原理 学习概率模型时&#xff0c;在所有可能的概率模型(分布)中&#xff0c;熵最大的模型是最好的模型。 假设离散随机变量X的概率分布是P(X)&#xff0c;则其熵为 且满足0<H(P)<logN 当且仅当X的分布是均匀分布时右边的等号成立&#xff0c;即当X服从均匀分布…

onlyoffice文件大小超出了服务器设置处理

onlyoffice文件大小超出了服务器设置处理 1.前言2. onlyoffice服务安装2.1 docker安装命令2.2 访问测试 3. 修改服务器文件大小限制方案3.1 旧方案-7.2版本不可行3.1.1 进入 OnlyOffice Document Server 容器3.1.2 编辑配置文件3.1.3 找到并修改文件大小限制3.1.4 保存并退出编…

【Java】ThreadPoolExecutor类参数简述

ThreadPoolExecutor类继承自AbstractExecutorService类&#xff0c;而AbstractExecutorService实现了ExecutorService接口 ThreadPoolExecutor类是Executor类中重要的实现类 1、ThreadPoolExecutor构造方法参数 在手册中&#xff0c; 一共有四种参数列表不同的构造方法。我们…

rkmedia的使用

一、rkmedia_test测试例程 RKMedia 的核心思想是把各个硬件资源独立成模块&#xff0c;模块开放出输入和输出端通过绑定的方式控制流从某个模块流出并且流入另外一个模块 目前 rk 平台可以支持的摄像头数据 yuv 和 raw 数据。 Raw 数据是没有经过 isp 信号处理的原始数据&#…

【排序】希尔排序(C语言实现)

文章目录 前言1. 希尔排序的思想2. 希尔排序的一些小优化 前言 本章将详细介绍希尔排序的思想及实现&#xff0c;由于希尔排序是在插入排序的思想上进行升华&#xff0c;所以如果不知道插入排序或者不熟悉的可以先看看这篇文章&#xff1a;《简单排序》中的直接插入排序。 1. 希…

【数据结构】——堆排序

前言&#xff1a;我们已经学习了堆以及实现了堆&#xff0c;那么我们就来给堆进行排序。我们怎么来进行排序呢&#xff1f;这一次我们就来解决这个问题。 如果我们堆排序要求排序&#xff0c;我们是建立大堆还是小堆呢&#xff0c;如果我们建的小堆的话&#xff0c;那我们在排序…