让你的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
Python中的类与对象之描述符详解
Mar 27 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
python使用tkinter实现简单计算器
Jan 30 Python
python flask框架实现重定向功能示例
Jul 02 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
python创建子类的方法分析
Nov 28 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
python_mask_array的用法
Feb 18 Python
python实现猜数游戏
Mar 27 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 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递归列出所有文件和目录的代码
2008/09/10 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
Python和C/C++交互的几种方法总结
2017/05/11 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
Python图像读写方法对比
2020/11/16 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
师范毕业生自荐信
2013/10/17 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书