让你的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 02 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python学习入门之区块链详解
Jul 25 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
使用Python画了一棵圣诞树的实例代码
Nov 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
三个类概括PHP的五种设计模式
2012/09/05 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
js版本A*寻路算法
2006/12/22 Javascript
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
python集合用法实例分析
2015/05/30 Python
python生成excel的实例代码
2017/11/08 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
python实现PCA降维的示例详解
2020/02/24 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
Python扫描端口的实现
2021/01/25 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
大学毕业生工作的自我评价
2013/10/01 职场文书
诚信承诺书模板
2014/05/26 职场文书
财产分割协议书范本
2014/11/03 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python