当前位置: 首页 > news >正文

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

相关文章:

  • 【开源视频联动物联网平台】开箱即用的物联网项目介绍
  • Apipost推出IDEA插件,代码写完直接调试
  • Python与设计模式--建造者模式
  • 【电路笔记】-电阻串联
  • 【Linux】驱动程序同步和异步通知方式
  • 【开源】基于JAVA的天然气工程运维系统
  • vuepress-----3、导航栏
  • HTML新手入门笔记整理:HTML常用标签总结表
  • 分布式定时任务系列6:XXL-job触发日志过大引发的CPU告警
  • 进阶C语言-字符函数和字符串函数
  • 播放器开发(四):多线程解复用与解码模块实现
  • 量子力学应用:探索科技前沿的奇幻之旅
  • 数据分片在分布式 SQL 数据库中的工作原理
  • 李宏毅2020机器学习课程笔记(二)- 深度学习
  • java开发中各个环境的适用场景
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java Agent 学习笔记
  • Java IO学习笔记一
  • Mybatis初体验
  • node 版本过低
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 高程读书笔记 第六章 面向对象程序设计
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 利用DataURL技术在网页上显示图片
  • 聊聊hikari连接池的leakDetectionThreshold
  • 如何在GitHub上创建个人博客
  • 因为阿里,他们成了“杭漂”
  • 用Python写一份独特的元宵节祝福
  • 原生 js 实现移动端 Touch 滑动反弹
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​iOS实时查看App运行日志
  • ​queue --- 一个同步的队列类​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #android不同版本废弃api,新api。
  • (LeetCode C++)盛最多水的容器
  • (小白学Java)Java简介和基本配置
  • (已解决)什么是vue导航守卫
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET企业级应用架构设计系列之开场白
  • ??myeclipse+tomcat
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Autowired和@Resource的区别
  • @Transactional 详解
  • [ 转载 ] SharePoint 资料
  • []sim300 GPRS数据收发程序
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Geek Challenge 2023] web题解
  • [HCIE] IPSec-VPN (手工模式)
  • [IDF]啥?