位置: 编程技术 - 正文

教你用Type Hint提高Python程序开发效率(typeto)

编辑:rootadmin

推荐整理分享教你用Type Hint提高Python程序开发效率(typeto),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:typecho怎么用,typekit怎么用,typec to typec怎么用,typectolighting怎么用,typectolighting怎么用,typecho怎么用,如何用typec,如何用typec,内容如对您有帮助,希望把文章链接给更多的朋友!

简介

Type Hint(或者叫做PEP-)提供了一种针对Python程序的类型标注标准。

为什么使用Type Hint?对于动态语言而言,常常出现的情况是当你写了一段代码后,隔段时间你可能忘记这个方法的原型是什么样子的了,你也不清楚具体应该传入什么类型的参数,这样往往需要你去阅读代码才能定义每个类型具体是什么。或者当你使用一个文档并不是特别完全的第三方库,你不知道这个库应该如何使用,这都会很痛苦。

现在,借助Type Hint,你可以实现:

1、实现类型检查,防止运行时出现的类型不符合情况。

2、作为文档附加属性,方便开发者调用时传入传出的参数类型。

3、提升IDE的检查机制,在智能提示时更快给出提示和类型检查结果。

实现这个过程中,你需要使用Python 3.5+中提供的新模块typing。值得注意的是,这个改动并不会影响程序运行,仅仅是为了方便类型检查器实现的。

Type Hint类型检查器

目前,比如JetBrains家的PyCharm已经支持Type Hint语法检查功能,如果你使用了这个IDE,可以通过IDE功能进行实现。如果你像我一样,使用了SublimeText编辑器,那么第三方工具mypy可以帮助到你。AnacondaST3最近要发布的2.0版本也内置了mypy功能的支持,具体的进度可以看一下这个issue。一些其它的Python工具(比如代码提示工具jedi 0.+)也支持了Type Hint功能。

教你用Type Hint提高Python程序开发效率(typeto)

从简单的例子开始

从简单的例子开始,我们先从一个简单的程序开始,运行环境为Python 3.5.2,使用mypy工具进行检查。

首先通过pip install mypy-lang命令安装mypy工具。注意是mypy-lang,之所以是这样,是因为在pypi里mypy这个名字已经被占用掉了。

接下来,通过mypy检查下面这个文件

在命令行中执行命令mypy fib.py,获取返回结果:

但是在实际的应用过程中,这个功能在Python里是可以正常运行的:

可以看到,mypy工具提示了我们的代码中存在一处类型不匹配的问题,但是如果不进行检查,代码有可能执行出不可预知的结果。

在这个例子里面,我们使用了两种类型,一种是Python基础数据类型,比如str、int等等,这些类型数据是可以直接使用的;另外一种是来自于typing中引入的Iterator,用来表示迭代器类型。另外一个值得注意的是,typing中部分类型也会随时添加,一般我们以演示版本为准。

从简单到复杂,类型组合怎么办?

实际上,在我们使用过程中还有可能传递一些更加复杂的参数类型,比如list类型,tuple类型等等,这类型的数据如何声明呢?我们可以先看一个例子:

这个函数的参数我们从字面可以看出来分别是str,元素为str的list类型和两个整数参数。我们假定一个返回值为((int, int), str),那么这个类型检查可以这样定义:

其它的一些类型提示、协程等等的支持都可以在官方的typing模块文档中进行查看。

关于生产的一些闲扯

我们现在也在进行一些mypy工具在生产环境中的具体使用测试,但是我们也发现了一些存在的问题,比如Python本身的动态语言特性给类型标注就带来了一些麻烦。另外,变量复用导致的类型变换有可能会提示采用新的变量实现。这对于一个已经存在的线上项目来说相对成本较高,我们后续也会在一些新项目中采用这种方式。另外mypy还是一个比较新的项目,本身是拥有一些bug。另外一个是在某些mypy的非类型错误提示其实非常的模糊,导致很多错误有时需要进行人工排查。

不管怎样,即便在mypy存在一些缺陷,但是仍旧是未来非常有潜力的工具,提前了解和应用也能有效的提升程序的强壮性。

标签: typeto

本文链接地址:https://www.jiuchutong.com/biancheng/386256.html 转载请保留说明!

上一篇:Python如何实现文本转语音(python文本文件操作步骤)

下一篇:总结python爬虫抓站的实用技巧(python爬虫抓取数据的步骤)

  • 发票未到怎么暂估入账
  • 个税里的累计专票是什么
  • 增值税零申报怎么报税
  • 有限合伙企业要交增值税吗
  • 应收账款余额百分比法是什么意思
  • 顺丰电子发票开错了可以重新开吗
  • 增值税发票丢了怎么办?
  • 道路货物运输服务可以加计扣除吗
  • 生产单位车间设计费应该计入什么科目?
  • 企业代缴个人所得税打印完税证明
  • 发票未能在汇算清缴前取得怎么办?
  • 销售合同总金额含税还是不含税
  • 一个月计提2个月工资
  • 解聘职工赔偿工资包括哪些
  • 新开公司第一个月个税零申报,但是有发工资
  • 新版edge浏览器兼容ie
  • 企业支付微信认证怎么弄
  • win10如何关闭自动修复
  • 电脑开机后无显示,但主机电源指示灯长亮
  • 销售部发生广告宣传费计入财务费用
  • 长期股权投资初始投资成本和入账价值
  • 无形资产本月增加本月摊销如何设置函数
  • 大沼泽地国家公园位于哪个城市
  • 三公经费包括哪些支出
  • php session实例
  • java web中的转发和重定向
  • opencv 方框识别
  • php强制下载文件在哪
  • 坏账损失计入损益表
  • 应付账款的平行登记
  • 中小企业发展专项资金亮点 免申即享
  • 增值税发票有哪些项目
  • 纳税人应按照当期可抵扣进项税额的10%
  • sql数据库转换mysql
  • 财务费用账户属于什么账户
  • 水利建设基金计费方式
  • 用友t6反记账步骤
  • 交耕地占用税如何交
  • 采用分期付款方式的会计分录
  • 异地预缴增值税后本地怎么申报
  • 固定资产清理主动
  • 业务招待费专用会计科目
  • 银行扣结算卡年费合理吗
  • 房地产开发公司是做什么的
  • 停车发票怎么盖章
  • 防伪系统制作
  • 短期理财收益账务分录
  • 苗木设计方案
  • 如何把数据生成表格
  • linux自动清理内存软件
  • mac截图快捷键设置
  • git连接linux服务器
  • ubuntu10.04 root的帐户启用方法
  • win7系统360浏览器自动打开怎么关闭
  • win7的打开方式在哪里
  • 电脑windows8怎么样
  • 电脑操作系统win8
  • Win10 Mobile Redstone新功能介绍
  • win10提醒功能
  • opengl 实现
  • 安卓开发框架mvvm
  • 网页制作颜色搭配
  • js中的filter方法
  • settimeout和setinterval在安卓机无效
  • xbox无法连接无线网络
  • 置顶聊天的人怎么不见了
  • 深入学习习总书记系列讲话精神
  • jquery 鼠标
  • service与activity数据交互
  • java与android的区别
  • android实现选择题模式
  • 电子发票未验真是假发票吗
  • 江苏国家税务机关电话
  • 销售钢材的税率增值税税率是多少
  • 农产品核定扣除办法38号公告
  • 金税三期个税下载官网手机版
  • 一般纳税人如何开具3%的发票
  • 设立新的机构或开办新的业务
  • 个体工商户将自有车辆出租取得的收入怎么征税
  • 2021年京东养鸡如何合作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设