美文网首页Python小哥哥
Python变量记忆法则帮你快速记忆变量名

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

作者: 我爱学python | 来源:发表于2019-04-01 15:59 被阅读11次

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变量记忆法则帮你快速记忆变量名

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

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

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

  • 总结-day3

    1. 变量 1.1 python中的变量 语法: 变量名 = 值说明:变量名不能是关键字规范:变量名 - 要求: ...

  • python语言变量命名规则

    Python语言变量命名规则 变量名只能包含字母、数字和下划线。(推荐学习:《0基础入门python》) 变量名可...

  • Ansible 小手册系列 十一(变量)

    变量名约束 变量名称应为字母,数字和下划线。 变量应始终以字母开头。 变量名不应与python属性和方法名冲突。 ...

  • 01. 基础语法

    基础语法 本系列Python博客适合已有其他编程语言基础的小伙伴快速入门! 一、变量 1). 变量名命名规则 以数...

  • 变量作用域

    python的域规则 -变量作用域:在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行...

  • Python基础手册24——函数中变量的作用域

    五、变量的作用域 当你在一个程序中使用变量名时,Python创建、改变或查找变量名都是在命名空间(一个保存变量名的...

  • 3. python3语法

    python3变量 1 声明变量语法:标识符/变量名=变量值 2 变量的命名规范(1). 在 Python 里...

  • Python——函数作用域

    Python作用域基础 当在程序中使用变量名时,Python创建、改变或查找变量名都是在所谓的命名空间中进行的。作...

网友评论

    本文标题:Python变量记忆法则帮你快速记忆变量名

    本文链接:https://www.haomeiwen.com/subject/rebvbqtx.html