让你的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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
Python中title()方法的使用简介
May 20 Python
Python 常用string函数详解
May 30 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
基于Python爬取股票数据过程详解
Oct 21 Python
10个python爬虫入门实例(小结)
Nov 01 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 chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP 采集心得技巧
2009/05/15 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
Python多线程实现同步的四种方式
2017/05/02 Python
基于python实现简单日历
2018/07/28 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Django 自动生成api接口文档教程
2019/11/19 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
Python异常处理机制结构实例解析
2020/07/23 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
Delphi软件工程师试题
2013/01/29 面试题
中学生打架检讨书
2014/02/10 职场文书
白莲教口号
2014/06/18 职场文书
双拥工作宣传标语
2014/06/26 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
2015年党总支工作总结
2015/05/25 职场文书
预备党员入党感想
2015/08/10 职场文书
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL