让你的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导入txt数据到mysql的方法
Apr 08 Python
Python实现的直接插入排序算法示例
Apr 29 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
python怎么自定义捕获错误
Jun 29 Python
python3爬虫中多线程的优势总结
Nov 24 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python实现8种常用抽样方法
Jun 27 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
第五节 克隆 [5]
2006/10/09 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
JS & JQuery 动态添加 select option
2016/06/08 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python简单的函数定义和用法实例
2015/05/07 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
导购员的岗位职责
2014/02/08 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
小学生倡议书范文
2014/05/13 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python