让你的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实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Python版微信红包分配算法
May 04 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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/03/27 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现2048小游戏
2015/03/30 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Flask之flask-script模块使用
2018/07/26 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Django之路由层的实现
2019/09/09 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
建龙钢铁面试总结
2014/04/15 面试题
小学教师的自我评价范例
2013/10/31 职场文书
单位在职证明范本
2014/01/09 职场文书
消防安全管理制度
2014/02/01 职场文书
2014国培学习感言
2014/03/05 职场文书
财务内勤岗位职责
2014/04/17 职场文书
个性发展自我评价2015
2015/03/09 职场文书
2015年教务工作总结
2015/05/23 职场文书
退休欢送会主持词
2015/07/01 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
html form表单基础入门案例讲解
2021/07/21 HTML / CSS