【学习心得】Python的注解/Type Hints(简介)

2024-02-17 07:52

本文主要是介绍【学习心得】Python的注解/Type Hints(简介),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        Python3.5之后出现的新特性(Python Type Hints),中文翻译可以叫做“注解”、“类型标注”、“类型提示”。类型标注的作用是:指明某个变量或者返回值的类型,他的语法形式是什么样子的呢?这篇文章是我自己学习Python过程中的一个知识点小记,希望能帮助到大家。

一、基本语法

(1)变量类型注解

variable_name: type

举例说明 

age: int = 30  # 变量age被注解为整数类型
name: str = "Alice"  # 变量name被注解为字符串类型
a = 1
type(a)  # <class 'int'>a: int = 1
type(a)  # <class 'int'>a: int = "你好"
type(a)  # <class 'str'>


 

【注】从上图可以看出,Python的类型标注,虽然指明了希望你赋值一个int类型但你仍然可以按照你自己的想法去改变赋值的数据类型。

(2)函数参数类型注解

在函数定义中,可以在参数名后跟一个冒号和类型,还可以用"->"箭来指定返回值类型。

 举例说明

def greeting(name: str) -> str:return 'hello ' + name

 


【注】从上图可以看出, 开发者可以通过类型标注确保函数接口的一致性,这样其他开发者在调用该函数时会清楚应该传递何种类型的参数,从而避免错误。

(3)函数带有关键字参数和默认值的情况

def calculate_area(radius: float = 1.0) -> float:return 3.14 * radius ** 2


 

(4)元组和列表类型注解

元组类型提示:variable_name: tuple[type1, type2, ...]

列表类型提示:variable_name: list[type]

元组或者列表类型后面用中括号表明所装元素的类型

 举例说明一

# 元组类型提示
coordinates: tuple[int, int] = (100, 50)# 列表类型提示
students: list[str] = ['小明', '小花', '小红']


 

举例说明二

def scale(scalar: float, vector: list[float]) -> list[float]:return [scalar * num for num in vector]new_vector = scale(2.0, [1.0, -4.2, 5.4])

 (5)字典类型注解

 variable_name: dict[key_type, value_type]

这里的 key_type 和 value_type 分别代表字典中键和值的预期数据类型。

举例说明 

# 字典类型注解的实例
person_info: dict[str, any] = {"name": "Alice","age": 30,"city": "New York"
}

 


 

【注】 中括号中第一个位置是key的类型,第二个位置是value的类型。可以用any来表明value可以是任意类型数据。

 (6)给类型取别名

类型别名是使用type语句来定义type Vector = list[float]

type语句是在 Python 3.12 中新增加的。 为了向下兼容,类型别名也可以通过简单的赋值来创建Vector = list[float]

举例说明

# type Vector = list[float]
Vector = list[float]def scale(scalar: float, vector: Vector) -> Vector:return [scalar * num for num in vector]new_vector = scale(2.0, [1.0, -4.2, 5.4])

 二、类型注解的好处

(1)提升代码可读性

        类型标注能够使阅读代码的人快速理解每个变量、函数参数和返回值的预期类型,这在大型项目或团队协作开发中尤为重要,有助于减少误解,提高代码的自文档化能力。

(2)提高代码的可用性和可靠性

        开发者可以通过类型标注确保函数接口的一致性,这样其他开发者在调用该函数时会清楚应该传递何种类型的参数。类型标注也可以作为API文档的一部分,指导用户正确地使用代码。

(3)静态类型检查与错误预防

        虽然Python是动态类型的语言,但在编写类型标注后可以配合静态类型检查工具(如mypy)进行类型检查。这些工具能够在编译阶段发现潜在的类型错误,从而提前修复,减少运行时由于类型错误引发的异常。

三、静态类型检查mypy的简单使用

(1)安装 

pip install mype

(2)使用

这里有一个叫做test.py的文件 

# 双向链表节点
class Node:def __init__(self, data: int, prev: "Node"):self.data = dataself.next = Noneself.prev = prev

 用mype test.py来执行静态类型检查,静态类型检查的意思是在没有运行程序的情况下检查出语法错误。检查变量是否被赋予了正确的数据类型,函数参数是否匹配其声明的类型,以及函数返回值是否符合预期类型。

mypy test.py

这篇关于【学习心得】Python的注解/Type Hints(简介)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717140

相关文章

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.