位置: 编程技术 - 正文

教你用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爬虫抓取数据的步骤)

  • 进项税额和销项税额是什么
  • 包装运杂费结转生产成本会计分录
  • 事业单位固定资产计提折旧是当月还是次月
  • 查看企业用什么软件
  • 什么是未投入使用的固定资产
  • 本期进项税大于销项税
  • 小规模季度报税流程
  • 不动产进项税额分两年抵扣
  • 运输过程中货物丢失
  • 申报个人所得税的详细流程
  • 房贷可以抵个人所得税吗
  • 税务局每年都会大数据抽查吗
  • 主营业务税金及附加包括印花税吗
  • 社保滞纳金是否影响企业信用等级
  • 计提附加税的会计分录
  • 企业弥补亏损的三个途径
  • 未抵扣的进项税可以留底多久
  • 销售净利率计算公式是什么
  • 企业购买的土地计入无形资产
  • 公司注销固定资产如何处理
  • 2019附加税优惠政策
  • 小规模纳税人销售自己使用过的物品
  • 建筑公司小规模纳税人怎么做账报税
  • win7旗舰版系统怎么样
  • deepin下载教程
  • ocxdll.exe - ocxdll是什么进程 有什么用
  • 其他应收款贷方负数说明什么
  • vue中的...
  • 出口货物退免税证明办税进度
  • 生活补助费能不能退回来
  • php语言之面向对象编程 educoder
  • 社保退工伤保险怎样做分录
  • 国有企业收到财政补助如何做账
  • ajax调用php接口
  • java编程入门基础教程
  • vue组件教程
  • 工资应纳税额怎么算
  • 定额发票和增值税发票
  • 网上变更财务负责人
  • python tqdm是什么
  • 应付职工薪酬中的职工是指
  • 支付所得税属于经营活动产生的现金流量吗
  • 其他应付款辅助是供应商还是客户
  • sql server 2005 service pack3
  • ibm db2认证
  • 女装淘宝店铺如何盈利
  • 预付账款指的是哪些
  • 公司员工食堂买菜没发票怎么办
  • 商品流通企业进货费用先进行归集
  • 小规模纳税人结转增值税的账务处理
  • 房租费用入账怎么处理
  • 已抵扣未申报的税额如何转出
  • 上年多计提的费用,今年如何记账
  • 企业如何优化管理
  • pe市盈率法
  • 现金劳务收入会计分录
  • 报表主营业务收入计算公式
  • 研发费用加计扣除是什么意思啊
  • 进口关税,增值税,消费税
  • 会计刚开始学什么
  • mysql mod
  • mysql 修改值
  • XP系统安装不了QQ
  • avserve2.exe是什么东东
  • win10病毒与防护
  • xp操作系统入门
  • 如何设置鼠标移入并停止时触发接口
  • windows7旗舰版桌面壁纸怎么更换
  • win8.1开不了机怎么办
  • 铁嘴李林
  • html上拉加载更多
  • div+css布局的步骤
  • python中的变量赋值
  • 浏览器firefox
  • 编写shell脚本,批量建立用户
  • jquery 右键菜单
  • Android事件处理模型
  • easyui treegrid重新加载
  • 网上交购置税怎么拿完税证明
  • 租房减免税收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设