iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >教你用Type Hint提高Python程序开发效率
  • 837
分享到

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

程序开发教你用效率 2022-06-04 18:06:05 837人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

简介 Type Hint(或者叫做PEP-484)提供了一种针对python程序的类型标注标准。 为什么使用Type Hint?对于动态语言而言,常常出现的情况是当你写了一段代码后,隔段时间你可能忘记这个方

简介

Type Hint(或者叫做PEP-484)提供了一种针对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.10+)也支持了Type Hint功能。

从简单的例子开始

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

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

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


# fib.py
from typing import Iterator


def fib(n: int) -> Iterator[int]:
  a, b = 0, 1
  while a < n:
    yield a
    a, b = b, a + b

i = fib(3.2)
print(next(i))
print(next(i))

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


➜ mypy fib.py
fib.py:11: error: Argument 1 to "fib" has incompatible type "float"; expected "int"

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


➜ mypy python fib.py
0
1

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

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

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

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


def foo(strings, string_list, count, total):

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


from typing import List, Tuple

Result = Tuple[Tuple[int, int], str]

def foo(strings: str, lines: List[str], line_number: int, total_lines: int) -> Result:

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

关于生产的一些闲扯

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

不管怎样,即便在mypy存在一些缺陷,但是仍旧是未来非常有潜力的工具,提前了解和应用也能有效的提升程序的强壮性。以上就是利用Type Hint提升Python程序开发效率的全部内容,希望本文对大家使用python有所帮助。

--结束END--

本文标题: 教你用Type Hint提高Python程序开发效率

本文链接: https://www.lsjlt.com/news/14390.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 提高Python开发效率:手把手教你配置国内pip源
    从零开始,一步步教你配置pip国内源,让你的Python开发更高效 在Python的开发过程中,我们经常会用到pip来管理第三方库。然而,由于国内的网络环境问题,使用默认的pip源往往会导致下载速度缓慢、甚至无法连接的情况。为了...
    99+
    2024-01-17
    高效 Python开发 pip源配置
  • 怎么提高 Python 开发效率
    本篇内容介绍了“怎么提高 Python 开发效率”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Sublime Text中支持Python运...
    99+
    2023-06-15
  • 提升开发效率:Python更新pip教程!
    Python更新pip教程:快速提升开发效率! 作为一名Python开发者,我们都知道pip是Python的一个包管理器,它可以帮助我们快速、方便地安装、升级和卸载Python包。但是,由于pip不时会出现安装包失败、速度慢等问...
    99+
    2024-01-18
    Python 更新 pip
  • ASP IDE 缓存教程:如何提高开发效率?
    在 ASP 开发中,缓存可以提高应用程序的性能,加速网页的渲染速度,同时也可以减轻服务器的负担。在本篇文章中,我们将介绍 ASP IDE 缓存技术的基础知识,并演示如何在 ASP IDE 中使用缓存来提高开发效率。 一、缓存的基础知识 ...
    99+
    2023-09-09
    ide 缓存 教程
  • PHP 框架教程:如何使用 Shell 提高开发效率?
    Shell 是一种计算机程序语言,它能够让用户以命令行的形式与操作系统进行交互。在开发 PHP 应用程序时,Shell 可以帮助我们提高效率,加快开发速度。本文将介绍如何使用 Shell 来优化 PHP 应用程序的开发过程。 一、Shel...
    99+
    2023-08-18
    框架 教程 shell
  • 提高微信小程序开发效率的方法
    小编给大家分享一下提高微信小程序开发效率的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序小结  在接触的微信小程序开发过程中,不难发现微信小程序为了...
    99+
    2023-06-14
  • Python编程算法:如何提高开发效率?
    Python是一门广泛使用的编程语言,它的简洁和可读性使其成为开发人员的首选语言之一。但是,即使是Python也需要正确的算法和编程习惯来提高开发效率。在本文中,我们将探讨如何通过Python编程算法来提高开发效率。 使用Python内置...
    99+
    2023-06-28
    编程算法 开发技术 git
  • PyCharm远程开发实用指南:提高开发效率
    PyCharm是一款功能强大的Python集成开发环境(IDE),广泛用于Python开发者进行代码编写、调试和项目管理。在实际的开发过程中,大多数开发者都会面临不同的问题,比如如何提...
    99+
    2024-02-23
    效率 pycharm 远程开发
  • 帮你提高开发效率的JavaScript20个技巧
    目录1. 申明和初始化数组2.进行求和、最小值和最大值3. 对字符串、数字或对象的数组进行排序4. 是否需要从一个数组中过滤掉无用的值?5. 为各种条件使用逻辑运算符6. 删除重复的...
    99+
    2024-04-02
  • Spring Boot教程之提高开发效率必备工具lombok
    目录一、前置说明本节大纲二、使用lombok插件的好处三、如何安装lombok插件四、 使用lombok注解简化开发4.1 Data注解4.2 Slf4j注解4.3 Builder注...
    99+
    2024-04-02
  • Python 开发者必看!NPM 是如何协助你提高开发效率的?
    随着互联网的发展,前端技术日新月异,前端开发也越来越复杂,这就需要我们不断地学习和更新技术。NPM(Node Package Manager)就是一个非常强大的工具,它可以协助开发者更好地管理和使用不同的前端包和框架,从而提高开发效率。今...
    99+
    2023-09-23
    http linux npm
  • ASP 函数教程 API:怎样使用它来提高开发效率?
    在 ASP 开发中,函数是非常常用的一种工具,它们可以让我们更高效、更简便地完成各种操作。今天,我们就来介绍一下 ASP 函数教程 API,看看它怎样帮助我们提高开发效率。 ASP 函数教程 API 是一组 ASP 内置函数的集合,它们可...
    99+
    2023-10-22
    函数 教程 api
  • 在程序的开发中PHP如何提高程序的运行效率
    在程序的开发中PHP提高程序运行效率的方法:1.查询语句中尽量不使用select *。2.需要查什么数据用对应的字段,减少查询内容。3.少用子查询可用表连接代替。4.少用模糊查询。5.在数据表中创建索引。6.对程序中经常用到的数据生成缓存。...
    99+
    2024-04-02
  • 用Python索引技术提高HTTP开发效率,你还在等什么?
    Python是一种高级编程语言,它拥有广泛的应用领域。作为一名开发人员,我们经常会遇到HTTP请求相关的开发任务。对于这样的任务,使用Python的索引技术可以提高开发效率。 Python中的索引技术是一种非常强大的工具。它可以帮助我们快速...
    99+
    2023-06-03
    索引 开发技术 http
  • PHP 实时 API 容器,如何提高你的开发效率和应用程序性能?
    在现代 Web 开发中,API 已经变得越来越重要。API 可以让不同的应用程序之间互相通信,提供了更好的扩展性和更好的用户体验。而 PHP 实时 API 容器则是一种能够提高开发效率和应用程序性能的工具。 PHP 实时 API 容器是一...
    99+
    2023-10-01
    实时 api 容器
  • 优化Python并发编程接口,如何提高程序效率?
    Python是一门高级编程语言,它被广泛应用于数据科学、机器学习、人工智能等领域。在这些领域中,程序的运行效率是一个非常重要的因素。为了提高程序效率,Python提供了多种并发编程接口。本文将介绍如何优化Python并发编程接口,以提高程序...
    99+
    2023-05-26
  • Python path开发技术同步:如何提高开发效率?
    Python是一门非常流行的编程语言,它具有简单易学、功能强大、可移植性好等特点,因此被广泛应用于各种领域。Python path开发技术是Python编程中的一个重要方面,它可以帮助开发者更加便捷地管理Python模块,提高开发效率。本文...
    99+
    2023-07-24
    path 开发技术 同步
  • Laravel、IDE、PHP、Apache:如何提高你的Web开发效率?
    Web开发是一个复杂的过程,需要使用多种工具和技术。在这个过程中,Laravel、IDE、PHP和Apache是四个重要的工具,它们可以提高你的Web开发效率。在本文中,我们将讨论如何使用这些工具来提高你的Web开发效率。 一、使用Lar...
    99+
    2023-10-26
    apache laravel ide
  • 如何利用 Python 异步编程和 JavaScript 开发技术提高开发效率?
    在当今快节奏的软件开发环境中,开发人员需要不断寻找新的方法来提高生产效率。Python异步编程和JavaScript开发技术是两种流行的技术,它们可以使开发人员更加高效地完成任务。 Python异步编程 Python异步编程是一种并发编程技...
    99+
    2023-10-02
    异步编程 开发技术 javascript
  • 提高 Python 开发效率的3个小工具
    目录在SublimeText中支持Python运行在Mac系统的iTerm2中支持查看图片Python中的typing模块介绍 本文将介绍的三个小工具如下: 在Sublime Tex...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作