Python变量记忆法则帮你快速记忆变量名

2023-12-29 05:32

本文主要是介绍Python变量记忆法则帮你快速记忆变量名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python作为一门动态语言,其变量的类型可以自由变化。这个特性提高了代码的开发效率,却也增加了阅读代码和维护代码的难度。

假设有一个变量is_request_finished,从名字上来看,这个变量的值应该为True或者False,在写代码的时候,最初也确实是这样定义的。但是可能由于某些原因,在某一次赋值的时候,is_request_finished = 'True'。此时,如果代码的单元测试不够完善,那么if is_request_finished在 is_request_finished = True 和 is_request_finished = 'True'的时候都成立,问题被隐藏了。但是当is_request_finished = 'False'的时候,由于'False'作为一个非空字符串,就会使得if is_request_finished 依然成立,从而使程序的行为发现异常。

单个变量的类型异常也许还容易发现,但是如果变量是放在字典或者列表里面,那就比较麻烦了。假设需要保存一段个人信息,于是创建了下面这样一个列表套字典的数据结构:

这种方式开发起来非常的快速而方便,但是其他人甚至是开发者自己在一段时间以后读代码,都会有一种想抽死自己的冲动。因为根本不知道这个变量里面保存的是什么东西。

针对以上问题,常见的解决办法有三种。

Type Hints 与 Variable Annotations

在PEP 484中,引入了Type Hints,在PEP 526中引入了Variable Annotations。它使得Python 3.6及以后的Python 代码拥有了“声明”变量类型的能力。这里的“声明”之所以会打引号,是因为这个声明是给IDE和人看的。这个声明对 Python 的解释器无效。

Type Hints

PyCharm现在已经可以比较好地支持Type Hints了。例如下面这一段代码:

模拟一段上传文件的函数,上传成功以后返回True。接收一个参数url。在正常情况下,这个url应该是一个字符串。于是,使用Type Hints,代码可以变为:

如果直接运行,其运行效果如下图所示:

现在假设传递一个不是字符串的变量给upload函数,此时PyCharm就会提示类型有问题,如下图所示:

但提示归提示,强行运行也是没有问题的。这就说明Type Hints主要是给IDE和人用的,解释器并不会关心类型正不正确。

如果修改这个函数的返回值,让它不返回True 或者False,PyCharm 也会发出警告:

Type Hints的官方文档,可以参阅:typing — Support for type hints

Variable Annotations

对于Variable Annotations,如下图所示,虽然目前PyCharm还不能很好地提示变量类型不对,但是人在读代码的时候,还是会起到一定的帮助。

除了这种写法外,Variable Annotations还支持把类型写在注释中,如下图所示:

虽然PyCharm不能起到很好的提示作用,但是可以使用一个第三方库mypy来对代码做静态检查,其运行效果如下图所示,可以发现赋值的类型与声明的类型不一致(expression has type “str”, variable has type “bool”, 表达式的类型为“str”,变量的类型是“bool”)。

关于Variable Annotations的更多用法,可以参阅:Syntax for Variable Annotations

关于Mypy,可以参阅它的官方文档。

docstring

在docstring来标注变量的类型,如下图所示:

这种写法可以用来提示一个函数,或者一个类它里面的各个变量的情况。但是详细程度需要看开发者有没有耐心把这个注释写清楚。

Bean

这种方法来自与Java Bean的思想,它主要用来解决列表套字典,字典套字典,字典套列表,列表套列表这种深层的嵌套关系。

这篇关于Python变量记忆法则帮你快速记忆变量名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(