让你的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 排列组合之itertools
Mar 20 Python
python的三目运算符和not in运算符使用示例
Mar 03 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
django自定义模板标签过程解析
Dec 14 Python
Python 文件数据读写的具体实现
Jan 24 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
jquery对表单操作2
2011/04/06 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Python中的变量和作用域详解
2016/07/13 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python生成带有表格的图片实例
2019/02/03 Python
Python日期时间Time模块实例详解
2019/04/15 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
大学军训自我鉴定
2013/12/15 职场文书
目标管理责任书
2014/04/15 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
八达岭长城导游词
2015/01/30 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
MySQL连接控制插件介绍
2021/09/25 MySQL