【学习心得】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

相关文章

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型: