让你的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 相关文章推荐
在Linux下调试Python代码的各种方法
Apr 17 Python
python的exec、eval使用分析
Dec 11 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
Python生成器的使用方法和示例代码
Mar 04 Python
python实现文字版扫雷
Apr 24 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
python中altair可视化库实例用法
Jan 26 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/05/10 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
Python的两道面试题
2013/06/29 面试题
火锅店创业计划书范文
2014/02/02 职场文书
新年晚会主持词
2014/03/24 职场文书
小班下学期评语
2014/05/04 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
教师反邪教心得体会
2016/01/15 职场文书
68句权威创业名言
2019/08/26 职场文书