【学海拾贝】| 关于Python的 PEP 484规则了解:类型提示,函数注解

在实际的工厂在实际的工程代码的开发中,常常可以碰到这种情况

在这里插入图片描述

上网查了之后发现这是PEP484规则~

文章目录

  • 1 Type Hints for Variables(变量在这里插入图片描述
  • 2 Function Annotations(函数注解)
  • 3 Type Checking Tools(类型检查工具)
  • 4 Optional Type Hints(可选类型提示)

PEP 484 是 Python Enhancement Proposal(PEP)的一部分,它引入了类型提示(Type Hints)的概念,旨在增强 Python 语言的静态类型检查能力。PEP 484 于 2014 年由 Guido van Rossum 提出,并在 Python 3.5 版本中被正式采纳。

类型提示是一种在函数参数、返回值以及变量上添加类型信息的注解,这些注解并不会影响运行时的行为,但可以被静态类型检查工具和IDE用来提供更好的代码分析和错误检测。PEP 484 引入的类型提示主要通过使用注解的方式来定义函数和变量的类型信息。

以下是 PEP 484 引入的一些主要概念和语法:

1 Type Hints for Variables(变量在这里插入图片描述

的类型提示)

使用冒号 : 后跟类型的方式来为变量添加类型提示。

x: int = 5

2 Function Annotations(函数注解)

在函数参数和返回值上使用类型提示。

def add(x: int, y: int) -> int:
    return x + y

3 Type Checking Tools(类型检查工具)

引入了一些类型检查工具,例如 mypy,用于在开发过程中对代码进行静态类型检查。

# 使用 mypy 进行类型检查
# mypy filename.py

4 Optional Type Hints(可选类型提示)

类型提示是可选的,不会影响运行时行为,但对于类型检查工具提供了更多信息。

def greet(name: str, age: Optional[int] = None) -> str:
    if age is not None:
        return f"Hello, {name}! You are {age} years old."
    else:
        return f"Hello, {name}!"

PEP 484 的引入使得 Python 可以更好地支持静态类型检查,提高了代码的可读性和维护性,同时为开发者提供了更好的工具支持。在 PEP 484 的基础上,后续版本的 Python 进一步完善了类型提示的功能,如 PEP 563(Postponed Evaluation of Type Annotations)等。

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

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

相关文章

window下迁移SVN仓库到新的windows服务器

一、背景 一个基于 Windows 的 SVN 服务器,用于管理团队的代码库。该 SVN 仓库托管着公司的软件项目,包括多个分支和版本的代码。我们的团队规模约为 50 人,分布在不同的地理位置,他们都依赖 SVN 仓库来进行代码版本控制和协作开…

ETL工具-nifi干货系列 第四讲 Avro schema 序列化框架

一、在使用nifi的过程中会使用到遇到avro schema、avro data、avroReader、avroWriter等,所以本节课和大家一起学习下avro相关知识。 二、什么是Avro Apache Avro是hadoop中的一个子项目,也是一个数据序列化系统,其数据最终以二进制格式&…

ZnO非线性电阻片的老化机理生产厂家

金属氧化物限压器通常不带串联间隙,因此工作电压将长期作用在限压器内的电阻片上,长期有泄漏电流流过。对于工频电压,电流中包括一定分量的阻性电流。虽然阻性电流幅值相对于容性电流要小,但有可能随时间逐渐增加,并导致功率损耗的增加,即ZnO非线性电阻存…

Django 仿博客园练习

数据库搭建 部分功能介绍 【一】注册 (1)效果显示、简单简介 主要亮点 结合了layui和forms组件默认头像可以随着性别的选择发生改变自定义头像可以实时更新显示forms组件报错信息可以局部刷新显示在对应框体下面 没有直接使用layui的前端验证后端验证…

Flutter(踩坑)之Android sdkmanager tool not found

D:\Flutter\flutter\bin\flutter.bat doctor --verbose [√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.22631.3296], locale zh-CN)• Flutter version 1.2.1 at D:\Flutter\flutter• Framework revision 8661d8aecd (5 years ago), 2019-02-14 …

1.0 html(1)

html 一、基本介绍 1、定义:html是一种超文本标记语言,也是一种标识性语言(不是编程语言) 标记:记号(绰号) 超文本:就是页面内容可以包含图片、链接,音乐&#xff0c…

OC 技术 苹果内购

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

RHCE 补充:判断服务状态

内容补充:判断服务状态 systemctl 命令 系统控制管理命令工具 常用指令 1、启动 systemctl start 程序名 若要启动多个程序名,使用空格隔开,下同 2、重启:类似主机先断电再启动的一个状态 systemctl restart 程序名 3、停…

Spring Cloud 八:微服务架构中的数据管理

Spring Cloud 一:Spring Cloud 简介 Spring Cloud 二:核心组件解析 Spring Cloud 三:API网关深入探索与实战应用 Spring Cloud 四:微服务治理与安全 Spring Cloud 五:Spring Cloud与持续集成/持续部署(CI/C…

图论最短路径以及floyd算法的MATLAB实现

图论是数学的一个分支,起源于18世纪。1736年,数学家欧拉通过解决“哥尼斯堡七桥问题”,将问题抽象成点和线的关系,并通过理论分析得出结论,这个过程标志着图论的产生,欧拉也因此被称为“图论之父”。图论研…

机器人机械手加装SycoTec 4060 ER-S电主轴高精密铣削加工

随着科技的不断发展,机器人技术正逐渐渗透到各个领域,展现出前所未有的潜力和应用价值。作为机器人技术的核心组成部分之一,机器人机械手以其高精度、高效率和高稳定性的优势,在机械加工、装配、检测等领域中发挥着举足轻重的作用…

利用RWKV-Runner初步感受一下ai的世界

最近又听到群里的高手在讨论RWKV-Runner,于是没忍住,就想试试,没想到第一关就卡住了。 从群里大咖上传的RWKV-Runner_windows_x64.exe文件开始吧,又找了个虚拟机,直接放在桌面上运行一下,结果就跳出一堆文…

Java框架安全篇--Shiro-550漏洞

Java框架安全篇--Shiro-550漏洞 Shiro反序列化源码可以提取: https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 JAVA反序列化就不说了,可以参考前面文章 https://blog.csdn.net/m0_63138919/article/details/136751184 初始Apache Sh…

安科瑞智慧安全用电综合解决方案

概述 智慧用电管理云平台是智慧城市建设的延伸成果,将电力物联网技术与云平台的大数据分析功能相结合,实现用电信息的可视化管理,可帮助用户实现安全用电,节约用电,可靠用电。平台支持web,app,微…

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目,通过该项目掌握计算机视觉的方法在交通领域的相关应用,包括车道线检测的方法,多目标车辆追踪及流量统计方法&#…

1.4.1 着色器

着色器(Shader)是运行在GPU上的小程序,这些小程序为图形渲染管线的某个特定部分而运行,从基本意义上来说,着色器只是一种把输入转化为输出的程序。 一、着色器类QOpenGLShaderProgram QOpenGLShaderProgram是Qt中对着…

thinkadmin 新版安装步骤

1.通过 Composer 安装: ( 推荐方式,默认只安装 admin 模块 ) ### 创建项目( 需要在英文目录下面执行 ) composer create-project zoujingli/thinkadmin### 进入项目根目录 cd thinkadmin### 数据库初始化并安装 ### 默认使用 Sqlite 数据库,若使用其他数据库请按第二步修…

I.MX6ULL_Linux_驱动篇(57)linux Regmap API驱动

我们在前面学习 I2C 和 SPI 驱动的时候,针对 I2C 和 SPI 设备寄存器的操作都是通过相关的 API 函数进行操作的。这样 Linux 内核中就会充斥着大量的重复、冗余代码,但是这些本质上都是对寄存器的操作,所以为了方便内核开发人员统一访问 I2C/S…

当当狸智能激光雕刻机 多种材质自由雕刻,轻松打造独一无二的作品

提及“激光雕刻”,大多数人的印象一般都是:笨重巨大、价格昂贵、操作复杂、使用门槛较高、调试难度大...不是普通人能够随意操作的,让人望尘莫及。 而小米有品上新的这台「当当狸桌面智能激光雕刻机L1」,将超乎你的想象&#xff…

ABAP - 上传文件模板到SMW0,并从SMW0上下载模板

upload file template to SMW0 and download the template from it 首先上传文件到tcode SMW0 选择新建后,输入文件名和描述,再选择想要上传的文件 上传完成后: 在表WWWPARAMS, WWWDATA里就会有信息存进去 然后就可以程序里写代码了: 屏幕上的效果: