让你的Python代码实现类型提示功能


Posted in Python onNovember 19, 2019

Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,但是与此同时IDE无法向静态类型语言那样分析代码,及时给我们相应的提示。为了解决这个问题,Python 3.6 新增了几个特性PEP 484和PEP 526,帮助编辑器为我们提供更智能的提示。这些新特性不会影响语言本身,只是增加一点提示。当你使用比较智能的开发工具比如PyCHarm时,就会感觉到类型提示的方便之处。

变量注解

首先先看看变量注解。它的语法和某些类型后置的语言类似。

# 变量注解
a: int = 5
b: bool = True
f: float = 5.0
s: str = "abc"

声明类型之后,编辑器和IDE就会读取到这个类型注解,然后给予我们相应的提示。程序在运行的时候行为完全不变。

如果是自己编写的类,也可以用作变量注解。

class MyClass:
 def fun1(self):
  print("fun1")


me: MyClass = MyClass()
me.fun1()

对于较复杂的内置类型、泛型、生成器、自定义类型等,需要引入标准库typing。对于更复杂的类型,请直接参考typing标准库文档。

from typing import TypeVar, Iterable, Tuple, Dict, List

m: Dict[int, int] = {1: 1, 2: 2}
t: Tuple[int, ...] = (1, 2, 3)
l: List[int] = [1, 2, 3, 4]

函数注解

当使用Python编写复杂的函数时,我们常常为没有合适的提示而苦恼。函数注解可以帮助我们解决这个问题。

def add(a: int, b: int) -> int:
 return a + b

为函数添加注解之后,当我们调用这个函数的时候,编辑器就会给予对应的提示。当处理大型项目的时候,这个特性会很有用。

函数注解保存在函数的__annotations__属性中,如果你准备编写程序读取它,可以使用这个属性。

print(add.__annotations__)

以上这篇让你的Python代码实现类型提示功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符转换
Sep 06 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
Python排序搜索基本算法之归并排序实例分析
Dec 08 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
详解python配置虚拟环境
Apr 08 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
Python中调用其他程序的方式详解
Aug 06 Python
python类中super() 的使用解析
Dec 19 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
python实现学生信息管理系统源码
Feb 22 Python
wxPython实现分隔窗口
Nov 19 #Python
浅谈Python type的使用
Nov 19 #Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 #Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 #Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 #Python
Python算法中的时间复杂度问题
Nov 19 #Python
wxPython窗体拆分布局基础组件
Nov 19 #Python
You might like
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
extjs render 用法介绍
2013/09/11 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
jQuery操作css样式
2017/05/15 jQuery
浅析Vue 生命周期
2018/06/21 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python中os包的用法
2020/06/01 Python
python装饰器代码深入讲解
2021/03/01 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
普罗米修斯教学反思
2014/02/06 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
网吧消防安全责任书
2014/07/29 职场文书
手机被没收的检讨书
2014/10/04 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
集结号观后感
2015/06/08 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL