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

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle