让你的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程序添加图形化界面的教程
Apr 29 Python
在Python中处理时间之clock()方法的使用
May 22 Python
python妹子图简单爬虫实例
Jul 07 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
python GUI模拟实现计算器
Jun 22 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
pandas map(),apply(),applymap()区别解析
Feb 24 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
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
基于python内置函数与匿名函数详解
2018/01/09 Python
python使用mysql的两种使用方式
2018/03/07 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
工程承诺书怎么写
2014/05/24 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
postgresql中如何执行sql文件
2023/05/08 PostgreSQL