让你的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入门篇之编程习惯与特点
Oct 17 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
Python中协程用法代码详解
Feb 10 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
selenium+python截图不成功的解决方法
Jan 30 Python
Python面向对象之类的封装操作示例
Jun 08 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
python上下文管理的使用场景实例讲解
Mar 03 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 版本]
2007/03/20 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
学校教师安全责任书
2014/07/23 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
小学教师党员承诺书
2015/04/27 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
详解PyTorch模型保存与加载
2022/04/28 Python