首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!

例如,NumPy 1.20 版本中开始提供类型。Pandas 也有一系列公开的类型存根 ,但它们被标记为不完整的。(添加存根到这些库是非常重要的,这是一个巨大的成就!)...为了确保它完好,不被意外的Any毒害,我们一组文件写了调用 Mypy 的单元测试,并断言 Mypy 抛出的错误能匹配一系列预期内的异常:def test_check_function(self) -...性能Mypy 的性能并不是我们的主要问题。Mypy 将类型检查结果保存到缓存中,能加快重复调用的速度(据其文档称:“Mypy 增量地执行类型检查,复用前一次运行的结果,以加快后续运行速度”)。...至少有两种方法可以加速 Mypy,这两种方法都利用了以下的技术(我们内部没有使用):Mypy 守护进程在后台持续运行 Mypy,让它在内存中保持缓存状态。...如前所述,Mypy 每次运行后都会将类型检查结果缓存到磁盘——但是如果在新机器或新容器运行 Mypy(就像在 CI 一样),则不会有缓存的好处。

87420

Python开发者必备6个基本库

如果想要更快的Python应用程序,最简单方法就是使用PyPy,带有实时(JIT)编译器的Python运行时。Python应用程序使用PyPy运行,平均速度是普通Python应用程序的7.5倍。...PyPy 5.9 特点 数据科学框架NumPy和Pandas现在运行在PyPy的Python 2.7兼容版本。 围绕这些框架的大部分问题都源于PyPy与现有的C代码接口。...请注意,对于Python 2.7和Python 3.5兼容性,存在不同的二进制文件,因此需确保正在获取与将要运行的脚本匹配的版本。 BitBucket提供源代码和错误跟踪。...您需要在要部署的同一平台运行PyInstaller,无论是Windows,Mac还是Linux。...管理给定项目的安装工具可能变得非常繁琐,特别是自动生成需求,管理文档文件或编辑项目贡献者数据时。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

Python | 开发者必备的 6 个库

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。 不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。...PyPy 5.9 解决这个问题上取得了重大进展。 PyPy 5.9 的功能 数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本。...现在可以在即将发布的 Python 3.7 使用betas了, Windows 更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...Mypy 可以 Python Package Index 找到:https://pypi.python.org/pypi/mypy 并通过 pip install mypy 来安装。

2.1K30

神级操作!优化​Python开发环境的几个技巧

需要注意的是,pyenv只电脑搭建本地python环境。搭建python环境需要多种函数库。 Ubuntu系统的电脑,必须安装以下函数库以防止运行出现问题。...下面介绍mypyMypy是一种静态python代码检查器,作用是错误发生之前找到他们。使用poetry向项目中添加mypy并进行代码检查与添加black一样简单。...运行mypy也可能导致很多麻烦。当然,可以将其设置为只对你关心的错误发出警告。这可以通过项目中添加mypy.ini文件实现。...我倾向于后者,因为precommit只本地使用,而不在CI/CD服务器。 相反,black和mypyCI/CD服务器运行,因此,将它们添加到项目的dev依赖项是有意义的。...该文件里,你需要配置所有应该运行的钩子。

1.1K10

自动化让你远离烦恼,几个小技巧轻松优化​Python开发环境

需要注意的是,pyenv只电脑搭建本地python环境。搭建python环境需要多种函数库。Ubuntu系统的电脑,必须安装以下函数库以防止运行出现问题。...下面介绍mypyMypy是一种静态python代码检查器,作用是错误发生之前找到他们。使用poetry向项目中添加mypy并进行代码检查与添加black一样简单。...运行mypy也可能导致很多麻烦。当然,可以将其设置为只对你关心的错误发出警告。这可以通过项目中添加mypy.ini文件实现。...笔者倾向于后者,因为precommit只本地使用,而不在CI/CD服务器。相反,black和mypyCI/CD服务器运行,因此,将它们添加到项目的dev依赖项是有意义的。...该文件里,你需要配置所有应该运行的钩子。mypy与Black的环境下,文件内容如下所示。

1.2K30

Python 开发者的 6 个必备库

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。 不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。...PyPy 5.9 解决这个问题上取得了重大进展。 PyPy 5.9 的功能 数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本。...现在可以在即将发布的 Python 3.7 使用betas了, Windows 更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...Mypy 可以 Python Package Index 找到:https://pypi.python.org/pypi/mypy 并通过 pip install mypy 来安装。

2.1K70

Python | 开发者必备的 6 个库

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。 不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。...PyPy 5.9 解决这个问题上取得了重大进展。 PyPy 5.9 的功能 数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本。...现在可以在即将发布的 Python 3.7 使用betas了, Windows 更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...Mypy 可以 Python Package Index 找到:https://pypi.python.org/pypi/mypy 并通过 pip install mypy 来安装。

1.7K30

Python开发必备的6个库,有了它事半功倍!

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。...PyPy 5.9 解决这个问题上取得了重大进展。 PyPy 5.9 的功能 数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本。...现在可以在即将发布的 Python 3.7 使用betas了, Windows 更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...06 Python 必备之 Mypy Mypy 主要用于何处?Python 的动态性既是一种福音,也是一种烦恼,对于快速构建软件非常棒,但是当代码难以推理、测试和调试时,并不是很棒。

1.8K80

Python 开发者的 6 个必备库

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。 不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。...PyPy 5.9 解决这个问题上取得了重大进展。 PyPy 5.9 的功能 数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本。...现在可以在即将发布的 Python 3.7 使用betas了, Windows 更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...Mypy 可以 Python Package Index 找到:https://pypi.python.org/pypi/mypy 并通过 pip install mypy 来安装。

1.1K70

Python 开发者的 6 个必备库

如果你需要更快的 Python 应用程序,最简单的实现的方法就是通过 PyPy ,Python 运行时与实时(JIT)编译器。...与使用普通的 Python 对等程序相比,使用 PyPy 的 Python 应用程序的运行速度平均提升7.5倍。不幸的是,PyPy 与许多 Python 的明星框架并不是很好地兼容。...PyPy 5.9 解决这个问题上取得了重大进展。 PyPy 5.9 的功能 数据科学框架 NumPy 和 Pandas 现在运行在 PyPy 的 Python 2.7 兼容版本。...现在可以在即将发布的 Python 3.7 使用betas了, Windows 更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...06 Python 必备之 Mypy Mypy 主要用于何处?Python 的动态性既是一种福音,也是一种烦恼,对于快速构建软件非常棒,但是当代码难以推理、测试和调试时,并不是很棒。

82320

流畅的 Python 第二版(GPT 重译)(八)

语法的相似性是误导的。TypedDict非常不同。它仅存在于类型检查器的利益,并且在运行时没有影响。...示例 15-9 的第二点非常重要要记住:Mypy 不会在这段代码中标记任何问题,但在运行时,whatever中的值可能不符合BookDict结构—实际,它可能根本不是dict!...无论如何,IndexError 是一个运行错误Mypy 甚至像 print([][0]) 这样的简单情况下也无法发现问题。...pandas数据分析包中,波浪线对布尔过滤条件取反;请参阅pandas文档中的“布尔索引”以获取示例。 正如之前承诺的,我们将在第十二章的Vector类实现几个新的运算符。...示例 16-8 和 16-9 中的问题实际比晦涩的错误消息更深:如果一个运算符特殊方法由于类型不兼容而无法返回有效结果,它应该返回NotImplemented而不是引发TypeError。

13410

如何建立一个完美的 Python 项目

作为回报,Black 可以带来速度、确定性和避免调整 Python 代码风格的烦恼,从而有更多的精力和时间放在更重要的事情。...Mypy 将 Python 的表达能力和便利性与功能强大的类型系统的编译时类型检查结合在一起,使用任何 Python VM 运行它们,基本没有运行时开销。...如下: 静态类型可以使程序更易于理解和维护 静态类型可以帮助您更早地发现错误,并减少测试和调试的时间 静态类型可以帮助您在代码投入生产之前发现难以发现的错误 pipenv install mypy --...我们需要将 mypy 配置为仅在我们的代码运行,并忽略没有类型注释的导入错误。我们假设我们的代码位于以下配置的 best_practices 包中。...[13] 文件保存运行 pytest 欢迎热爱技术和开源的小伙伴加入 HG 推出的译文亦舞系列的翻译中来,可添加微信号:HelloGitHub(备注:翻译)。

1.6K40

用 Type Annotation 提升 Python 代码健壮性

动态类型的语言,比如在写 Python 的时候,如果不用一些额外的手段,这种低级的错误,并不会在检查时爆出来,只会在运行时爆出来。如果线上还是出这个问题,就蛋疼了。...,这种低级的错误,并不会在检查时爆出来,只会在运行时爆出来。...我这个类型检查可以使用 IDE 的时候给我分析出方法参数的类型和返回值。所谓『医治未病,中医治已病,下医治大病』, 防范于未然,善之善者也。...你说的类型检查的问题: 可以通过提升程序员的素质来解决这个问题,或者让他们长点脑子,别特么在这种低级错误错误。...但我又不希望这个声明不是强制性的 我构思程序的时候,想专注于接口的设计。落实编码并且把代码写的足够的 dry 之后,在被调用的一些地方加上类型声明,这样可以提升我写代码的速度

1.5K20

力压 Java 与 C 的 Python 现状如何了?

我离不开 Python 的原因之一就是 Python 的社区非常好, StackOverflow 和 GitHub 与他人交流是一件非常愉快的事情。...tox Tox 依然是 Python 世界中最好的测试执行器,而且它也非常糟糕。不仅是因为 tox.ini 的语法很不直观,工具本身也非常。...当然这并不是 tox 自己的错误,而是整个 setup.py 系统就有设计缺陷。因为这些文件定义了包之间的依赖,而它们执行代码查找依赖继承关系就非常。这导致一系列工具都很慢。...更进一步,Python 的类型提示应该带来更多好处,如类型优化、自动运行时类型断言等。我发现运行时类型断言非常有用(特别是函数库中),但手工编写非常麻烦。...我犯过的所有编码错误中,90% 都是类型相关的错误(现在可以通过 mypy 捕获大部分),或是以为自己创建了新变量,实际错误地使用了同一个函数中定义过的变量。

73220

流畅的 Python 第二版(GPT 重译)(四)

开始 要开始类型检查,我 messages.py 模块运行 mypy 命令: …/no_hints/ $ pip install mypy [lots of messages omitted......daffy.py运行 Mypy引发birds.py中定义的alert_bird函数中的quack调用相同的错误: …/birds/ $ mypy daffy.py birds.py:16:...在运行时,Python 不关心声明的类型。它只使用鸭子类型。Mypy alert_bird中标记了一个错误,但在运行时使用daffy调用它是没有问题的。...这个小实验表明,鸭子类型更容易上手,更加灵活,但允许不支持的操作在运行引发错误。...第二十四章中,示例 24-6 __flag_unknown_attrs中使用NoReturn,这是一个旨在生成用户友好和全面错误消息的方法,然后引发AttributeError。

29910

干货 | 推荐一整套 Python 开发工具

Mypy将Python的表现力和便利性与强大的类型系统和编译时类型检查相结合。Mypy对标准Python程序进行类型检查,使用 Python VM 运行 mypy 基本没有运行时的开销。...mypy 官网这样写道: 静态类型可以使程序更容易理解和维护 静态类型可以帮助您更早地发现错误,并减少测试和调试 静态类型可以帮助您在代码投入生产之前找到难以发现的错误 pipenv install...我们需要将mypy配置为仅在我们的代码运行,并忽略没有类型注释的导入的任何错误。我们假设代码存在于以下配置的 best_practices包中。...pre-commit 的 Git 钩子 Git钩子允许您在任何时候提交或推送时运行脚本。这就可以支持我们每次提交/推送时,自动运行所有的格式化和测试。...在这里,我们配置提交Python 文件修改时,执行上述所有检查,并且仅在推送时运行pytest覆盖率测试,因为耗时可能较长。

1.2K10

Python 进阶指南(编程轻松进阶):十一、注释、文档字符串和类型提示

您可以通过运行以下命令用pip安装 Mypy: `python –m pip install –user mypy` MacOS 和 Linux 运行python3而不是python。...第一次阅读时,有些错误信息可能很难理解。Mypy 可以报告大量可能的错误,这里无法一一列举。找出错误含义的最简单方法是在网上搜索。...这样,编辑器将在您键入代码时不断运行 Mypy,然后在编辑器中显示任何错误。图 11-1 显示了 Sublime Text 文本编辑器中前一个例子的错误。...对于返回None来指示错误的函数,考虑引发一个异常。参见第 178 页的“引发异常与返回错误代码”。...即便如此,静态类型检查工具源代码不运行时使用类型提示来分析源代码。类型检查器,比如 Mypy,可以确保您不会将无效值赋给传递给函数的变量。通过防止一大类错误,这可以节省您的时间和精力。

90530

mypy 这个工具,让Python的类型提示变得非常实用

在此之前,我认为 Python 的类型提示就是一个花瓶,看起来好看,但并没有实质的作用,因为即使类型写错了,或者传错了,程序仍然可以运行,直到我发现了 mypy 这个工具。今天就来聊一聊 mypy。...mypy 是 Python 中的静态类型检查器。写完带有类型提示的代码之后,先别运行行,用 mypy 命令来检查下你的代码,如果有错误,会提示你,这让 Python 的类型提示有了真正的作用。...,现在让 mypy 检查一下: 果然,mypy 发现了三处错误,并一一提示,非常好用啊。...如果不希望检查某一行,可以注释加上"# type: ignore": y: int = "yyy" # type: ignore mypy 具有强大且易于使用的类型系统,具有很多优秀的特性,例如类型推断.../en/stable/ 常见配置项: files 逗号分隔的路径列表,如果命令行没有给出,则应由 mypy 检查,支持递归。

1.3K30

pandas更快的库

标签:Python,Pandas 是否发现pandas处理大量数据时速度较慢,并且希望程序运行得更快?当然,有一些使用pandas的最佳实践(如矢量化等)。...pandas为什么 由于底层的numpy数组数据结构和C代码,pandas库已经相当快了。然而,默认情况下,所有Python代码都在单个CPU线程运行,这使得pandas运行。...当使用默认设置运行pandas代码时,大多数CPU内核都不做任何事情,只有少数工作(大体只有9%的CPU工作)。 使代码运行更快的一种方法是同时使用多个CPU核,即多处理。...2.modinapply和concat函数中非常快,但在其他函数中非常。值得注意的是,许多测试(merge、filter、groupby等)中,modin比Panda。...3.Datatable进行简单的列计算时并不差,而且速度非常快。 从对更大数据集的测试中,还可以看到,大多数测试中,polars的性能始终优于所有其他库。

1.4K30
领券