让你的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 09 Python
Python中Class类用法实例分析
Nov 12 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
python生成圆形图片的方法
Mar 25 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
python flask实现分页的示例代码
Aug 02 Python
Python应用领域和就业形势分析总结
May 14 Python
python实现数据分析与建模
Jul 11 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 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
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
js中replace的用法总结
2013/12/27 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
讲解Python中的标识运算符
2015/05/14 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
ORACLE十问
2015/04/20 面试题
TCP/IP的分层模型
2013/10/27 面试题
信电学院毕业生自荐书
2014/05/24 职场文书
学习党代会心得体会
2014/09/05 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
答谢酒会主持词
2015/07/02 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript