让你的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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
python实现2048小游戏
Mar 30 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
基于python实现操作redis及消息队列
Aug 27 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 Python
Python基于百度API识别并提取图片中文字
Jun 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+MySQL删除操作实例
2015/01/21 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
openlayers4实现点动态扩散
2020/08/17 Javascript
Python中__name__的使用实例
2015/04/14 Python
python实现的文件同步服务器实例
2015/06/02 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
Python实现SMTP邮件发送
2020/06/16 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
初婚初育证明
2014/01/14 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
倡议书的写法
2014/08/30 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
工作态度检讨书范文
2015/05/06 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书