让你的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备份文件以及mysql数据库的脚本代码
Jun 10 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
python 平衡二叉树实现代码示例
Jul 07 Python
详解python 注释、变量、类型
Aug 10 Python
学生信息管理系统Python面向对象版
Jan 30 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
python实现拼图小游戏
Feb 22 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
Python排序函数的使用方法详解
Dec 11 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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 开发的 8 个技巧
2007/01/02 PHP
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
javascript定时保存表单数据的代码
2011/03/17 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
浅析JavaScript动画
2015/06/10 Javascript
利用JS实现数字增长
2016/07/28 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
关于redux-saga中take使用方法详解
2018/02/27 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
vue计算属性get和set用法示例
2019/02/08 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
python文件及目录操作代码汇总
2020/07/08 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
如何实现jdbc性能优化
2012/07/30 面试题
写给学生的新学期寄语
2014/01/18 职场文书
社区八一活动方案
2014/02/03 职场文书
超市中秋节活动方案
2014/02/12 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
北京爱情故事观后感
2015/06/12 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
学生病假条范文
2015/08/17 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书