2020年过去了,在过去的一年里涌现出很多优秀的Python库。与经过多年维护和迭代的numpy、TensorFlow、pandas相比,它们不同于大多数Python开发者所熟悉的库。今天要给大家介绍的是一个2020年诞生的新鲜Python库,本文介绍的10个Python库一直维护得非常好。废话不多说,下面开始本文的正式内容!1.Typer或许,您不经常编写CLI应用程序,但是当您编写时,您可能会遇到很多障碍。继FastAPI的巨大成功之后,tiangolo使用相同的原理为我们带来了Typer[1]:一个新的库,允许您使用Python3.6+的类型提示来编写命令行界面。这种设计确实让Typer脱颖而出。除了确保您的代码被正确记录外,您还可以通过一个小的更改获得一个带有身份验证的CLI界面。通过使用类型提示,您可以在Python编辑器(例如VSCode)中获得自动完成功能,这将提高您的工作效率。为了增强其功能,Typer在另一个非常著名的CLI工具Click的基础上进行了许多优化和改进。这意味着它可以利用其所有优势、社区和插件,同时以更少的样板代码开始简单的工作。2.Rich跟随CLI的话题。在使用终端时,往往是单调的白色,非常难以辨认和阅读。你想为你的终端输出添加颜色和独特的风格吗?打印复杂表格?显示漂亮的进度条?降价?表情符号?Rich[2]可以满足您的要求。查看示例屏幕截图以了解它的作用。3.亲爱的PyGui尽管正如我们所见,终端应用程序看起来很棒,但有时这还不够,您需要一个真正的GUI。为此,DearPyGui[3]诞生了,它是流行的DearImGuiC++项目的Python端口。DearPyGui使用视频游戏中流行的所谓即时模式范例。这意味着动态GUI是逐帧独立绘制的,不保留任何数据。这使得该工具从根本上不同于其他PythonGUI框架。它的性能非常好,并使用计算机的GPU来促进高度动态界面的构建,这在工程、模拟、游戏或数据科学应用程序中通常是必需的。4.PrettyErrors这是一个让你思考的Python库:“为什么以前没有人想到这个?”PrettyErrors[4]只做一件事,而且做得很好。在支持彩色输出的终端中,它将令人困惑的错误消息转换为更适合我们人眼解析的内容。无需费力扫描整个屏幕来查找错误消息……现在您可以一目了然地找到它。5.图表我们程序员喜欢解决问题和编码。但有时,作为急需的项目文档的一部分,我们需要向其他同事解释复杂的架构设计。传统上,我们转向GUI工具,我们可以处理图表和可视化,将其放入演示文稿和文档中。但这不是唯一的方法。Diagrams[5]允许您直接用Python代码绘制云系统架构,无需任何设计工具。只需要几行代码就可以绘制出令人眼花缭乱的架构图。6.Hydra和OmegaConf在做机器学习项目的研究和实验时,总是有无数的设置要尝试。在某些应用程序中,配置管理变得非常复杂。如果有一种结构化的方式来处理这种复杂性,将会大大提高开发效率。Hydra[6]是一种工具,允许您以可组合的方式构建配置并从命令行或配置文件覆盖某些部分。pythontrain_model.pyvariation=option_a,option_b├──variation│├──option_a.yaml│└──option_b.yaml├──base.yaml└──train_model.py另一个工具,OmegaConf[7]是分层配置的基础系统提供一致的API,支持不同的来源,例如YAML、配置文件、对象和CLI参数。7.PyTorchLightning每个可以提高数据科学团队生产力的工具都是无价的。没有理由让从事数据科学项目的人每次都必须重新发明轮子,反思如何更好地组织项目中的代码,使用一些不易维护的“PyTorch样板”,或者用潜在的控制来换取更高的性能。抽象层次。Lightning[8]有助于通过解耦科学和工程来提高生产力。它有点像TensorFlow的Keras,从某种意义上说,它使您的代码更加简洁。但是,它不会剥夺您的控制权。它仍然是PyTorch,您可以使用所有常用的API。该库可帮助团队利用围绕组件组织和明确职责的软件工程良好实践来构建可轻松扩展到多个GPU、TPU和CPU进行训练的高质量代码。这个库可以帮助那些数据科学团队的初级成员产生更好的结果,同时,更多有经验的成员会欣赏它,因为在不放弃控制的情况下提高了整体生产力。8.Hummingbird并不是所有的机器学习都是深度学习。很多时候,您的模型包含在scikit-learn中实现的更传统的算法(例如随机森林),或者您使用梯度提升方法,例如流行的LightGBM和XGBoost。然而,深度学习领域正在发生很多变化。PyTorch等框架正在以惊人的速度发展,硬件设备正在优化以更快地运行张量计算并降低功耗。如果我们可以利用这项工作来更快、更高效地运行我们的传统方法,那不是很好吗?这就是Hummingbird[9]的用武之地。这个来自Microsoft的新库将您训练的传统ML模型编译成张量计算。这很棒,因为它使您不必重新设计模型。截至目前,Hummingbird支持转换为PyTorch、TorchScript、ONNX和TVM,以及各种ML模型和向量化器。9.HiPlot几乎每个数据科学家都在他们职业生涯的某个阶段处理过高维数据。不幸的是,人脑还不够强大,无法直观地处理这类数据,所以我们不得不求助于其他技术。今年早些时候,Facebook发布了HiPlot[10],这是一个帮助发现高维数据中的相关性和模式的库,使用平行图和其他图形方式来表示信息。这个概念在他们的发布博客文章中有解释,但基本上它是一种可视化和过滤高维数据的好方法。HiPlot是交互式的、可扩展的,您可以从标准的JupyterNotebooks或通过它自己的服务器使用它。10.Scalene随着Python库的生态系统变得越来越复杂,我们发现自己编写的代码越来越多依赖于C扩展和多线程代码。这在比较性能时成为一个问题,因为CPython的内置分析工具不能正确处理多线程和本机代码。这时,Scalene[11]出手相救。Scalene是用于Python脚本的CPU和内存分析工具,可以正确处理多线程代码并在运行Python和本机代码时进行区分。您无需修改??代码,只需使用scalene从命令行运行脚本,它就会为您生成文本或HTML报告,显示每行代码的CPU和内存使用情况。结论一个易于使用的工具,使开发人员能够事半功倍。对于Python这种严重依赖第三方工具包的编程语言来说尤其如此。因为有了这些优秀的工具,Python的生态系统得到了完善和维护。
