9款杀手级超牛框架/库,第5款最令我惊艳!

news/2024/12/29 10:54:00/

Python是一门简洁、优美且强大的编程语言,它的强大,很大一部分原因来自于丰富的第三方工具包。

​通过这些第三方工具包,它可以轻松应对机器学习、数据分析、前端、后端等不同种类的需求和工具,这使得它的应用范围几乎覆盖了当前各大主流方向。

就如同前面所说,它的强大,离不开丰富的第三方工具包,pandas、TensorFlow、matplotlib等,这些完善的工具包,让它不仅可以用于模型训练、数据处理,还可以用于开发游戏、数据可视化。

本文,就来给大家介绍9款超级好用的Python工具包。其中,第5款彻底解决了数据分析一大痛点!

pyinspect

在大一些的项目开发过程中,会写很多实现不同功能的函数,久而久之,很多函数的名称都记不太清。

pyinspect[1]可以给你提供强有力的帮助!

你不仅可以在Python代码中像调用函数一样使用它,也可以在命令行下像命令行工具那样使用pyinspect。

pyinspect允许根据函数和类方法的名称搜索它们,并打印出一个清晰的列表,其中包含满足搜索条件的所有函数。你还可以使用pyinspect在终端中直接打印函数的代码,这样就可以在不打开任何文件的情况下提示它所做的工作。

jazzit

如果你的代码在支撑过程中报错了,你该怎么能够感知到这个错误?

当我们执行一个运行时间较长的工程时,不可能一直盯着屏幕,直到它运行完成。

但是,如果这期间它出现了错误,我们却没有感知,这样势必会浪费掉大量时间。

jazzit[2]可以你的代码再运行/出错时播放对应的声音,以此来给你对应的提醒。

安装

$ pip install jazzit

示例

from jazzit import error_track@error_track("curb_your_enthusiasm.mp3", wait=7)
def run():for num in reversed(range(10)):print(10/num)if __name__ == "__main__":run()

这样,你就可以对你的代码运行情况有更加直观的感知!

mach-nix

目前Python包/环境管理工具可以说是有非常多的选择,pip、pipenv、conda等。

但是,现有的Python软件包管理工具都无法实现可复用性,而且需要额外的虚拟化层。

而mach-nix旨在通过提供一种简单的使用Nix的方式来解决这些问题。

Nix是一款操作系统包管理工具,和RPM、APT一样。

通过与Nix的结合,mach-nix使得创建和共享Python环境变得更加容易,大大提升了它的可复用性和可移植性。

安装

可以通过pip进行安装:

$ pip install git+git://github.com/DavHau/mach-nix@3.0.1

也可以通过nix进行安装:

$ nix-env -if https://github.com/DavHau/mach-nix/tarball/3.0.1 -A mach-nix

下面,来看一下用mach-nix通过requirements.txt创建Python环境的示例:

$ mach-nix env ./env -r requirements.txt

Papis

Papis是一个功能强大且高度可扩展的基于命令行的文档和书目管理工具。

它可以从Dropbox、rsync、OwnCloud、GoogleDrive等主流网盘进行文档同步。也支持与其他同事进行共享文档,便于团队协作。

Papis还支持文档导出,可以导出bibtex、yaml等格式。

在兼容方面,Papis做的也很好。它可以使用papis-zotero和Zotero这款强大且开源的文献管理工具进行结合使用。

示例

首先,安装papis:

$ pip install papis

其次,下载2份示例PDF文档:

$ wget http://www.gnu.org/s/libc/manual/pdf/libc.pdf
$ wget http://www.ams.org/notices/201304/rnoti-p434.pdf

然后,把这2份文档加入到库中,方便管理:

$ papis add libc.pdf --set author "Sandra Loosemore" --set title "GNU C reference manual" --set year 2018 --set tags programming --confirm
# Get paper information automatically via de DOI
$ papis add --from doi 10.1090/noti963 --set tags programming rnoti-p434.pdf

最后,可以通过papis进行编辑和导出:

$ papis open
$ papis edit
$ apis export --all --bibtex > mylib.bib

PandasGUI

学习Python数据分析,有2个工具包一定会被用到,分别是numpy和pandas。

pandas可以说是Python数据分析中的神器,它可以在Python语言中实现很多SQL语句的功能。而且,还具备很多数据清洗和处理的附加功能。

但是,对比于很多数据库工具,它有一点不好的地方就是,它在可视化方面做的很差。

PandasGUI的出现,让我大为经验,它能够直接把pandas的DataFrames进行可视化,让我们数据分析过程中对数据有一个更加清晰的认知。

安装

$ pip install pandasgui
或
$ pip install git+https://github.com/adamerose/pandasgui.git

用法

首先,创建一个简单的DataFrames:

import pandas as pd
from pandasgui import show
df = pd.DataFrame(([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
show(df)

如果你将代码作为脚本而不是在IPython或Jupyter中运行,则需要这样做:

show(df, settings={'block': True})

Pippi

从事计算机视觉,能够找到很多和图像处理相关的Python库。从事自然语言处理,NLP相关的工具包也是层出不穷。

而音乐作为一种常见的多媒体形式,却鲜有相关的Python工具包。

如果你想通过代码处理一段音乐,然后对它进行控制和调整,就会不知所措、无从下手。

Pippi[3]就可以满足你的这个需求,它是一款用于Python的音乐处理库,它包含了一些方便的音乐数据结构,如SoundBuffer和Wavetable,使得处理音乐变得非常简单。除此之外,它还可以对音乐格式进行转换

from pippi import dspsound1 = dsp.read('sound1.wav')
sound2 = dsp.read('sound2.flac')# Mix two sounds
both = sound1 & sound2# Apply a skewed hann Wavetable as an envelope to a sound
enveloped = sound * dsp.win('hann').skewed(0.6)# Or just a sine envelope via a shortcut method on the `SoundBuffer`
enveloped = sound.env('sine')# Synthesize a 10 second graincloud from the sound, 
# with grain length modulating between 20ms and 2s 
# over a triangle shaped curve.
cloudy = enveloped.cloud(10, grainlength=dsp.win('tri', dsp.MS*20, 2))

pylambdarest

当让你用Python写一个REST API接口时,大概率会想到Flask。

而pylambdarest[4]是Flask之外一个非常不错的选择。

它是一款轻量级的框架,用于使用AWS Lambda + API网关构建REST API。

与大多数其他Python框架不同,它不提供任何路由功能,路由由API网关本身处理。

下面通过一个示例来对于pylambdarest与其他工具包的不同之处,

其他工具包

import jsondef handler(event, context):body = json.loads(event["body"])query_params = event["queryStringParameters"]path_params = event["pathParameters"]return {"statusCode": 200,"body": json.dumps({"message": f"Hello from AWS Lambda {body['name']}!!"})}
image.gif

pylambdarest

from pylambdarest import route@route()
def handler(request):body = request.jsonquery_params = request.query_paramspath_params = request.path_paramsreturn200, {"message": f"Hello from AWS Lambda {body['name']}!!"}

当使用API网关和python Lambdas时,最常见的模式是由代理API网关资源触发一个唯一的Lambda。Lambda然后使用类似于Flask的框架来完成所有的路由。在API Gateway + Lambda上下文中,作者认为路由应该由API Gateway本身处理,然后将请求转发给针对每个资源或endoint的特定Lambda函数。

Fixit

Fixit[5]是一个对Flake8进行补充的lint框架。它基于LibCST,这使得提供自动修复成为可能。通过模式匹配、测试工具包和实用工具助手(例如范围分析),可以很容易地构建Lint规则。它是优化的效率,易于定制。

安装

$ pip install fixit

通过配置fixit规则,可以对Python代码进行静态检查,能够有效的提升Python代码的质量。

isort

Python是一门对语法要求相对宽松的编程语言,因此对于很多Python初学者来说这门语言非常简单。

但是,Python中有很多约定成俗的规则,通过这个规则的约束和遵从,能够提升Python代码的可读性,降低维护成本。

以Python代码中的import为例,就有一定的规则,内置模块、自定义模块、第三方模块的导入都是有一定顺序的。

isort[6]就是针对Python中import部分自动规范化的工具包,通过使用isort,可以迅速按照规则调整模块导入部分。

使用isort之前:

from my_lib import Objectimport osfrom my_lib import Object3from my_lib import Object2import sysfrom third_party import lib15, lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14import sysfrom __future__ import absolute_importfrom third_party import lib3print("Hey")
print("yo")

使用isort之后:

from __future__ import absolute_importimport os
import sysfrom third_party import (lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8,lib9, lib10, lib11, lib12, lib13, lib14, lib15)from my_lib import Object, Object2, Object3print("Hey")
print("yo")

结语

目前,Python已经拥有数不清的第三方工具包。其中,不乏一些非常强大且好用的。

或许,当我们在开发过程中面临一个难题,需要花费很多功夫,开发大量代码才能完成的工作,使用第三方工具包只需要短暂的几行代码就可以解决。

因此,应该善于利用这些好用的工具包,它不仅能够节省时间,提升工作效率,还能够提供很多实用的辅助功能。


http://www.ppmy.cn/news/845950.html

相关文章

SpringBoot杀手锏-自动化配置原理

1.前言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。 当然,作为Spring Boot的精髓…

完美解决requirements.txt无法使用的问题

生成requirement.txt文件 pip freeze > requirement.txt查看requirement.txt type requiremenr.txt批量执行requirement.txt pip install -r requirement.txt但是,如果以上的操作的环境混用怎么办? 在导出依赖到 requirement.txt 文件时会有一种…

Python面试题杀手锏(二)

文章目录 面试题1要求思路代码 面试题2题型:文件操作问题思路 面试题3问题思路 面试题1 打印1到最大的n位数 要求 输入n,打印出从1到最大的n位数 思路 Python中已经对大整数可以进行自动转换了,所以不需要考虑大整数溢出问题 代码 def…

牛腩自制TXT文本分割工具

以前在博客园中看到某位朋友也发过一个分割工具的,不过那时自己不需要,也就没有收藏,今天自己需要把一个大的TXT文本文件分割成多份了,可又找不着那篇文章了,只好自己做了个简单的,效果如图: […

c#游戏进程杀手

c#游戏进程杀手 我认为写博客还是比较重要的,特别是短时间写出一个含有新知识点的软件。这样总结下这次编程经验和再捋顺一下这次编程思路。首先来谈谈为什么想做这个小程序,一是感觉自己太贪玩想控制一下,二是也锻炼下自己的编程。好&#…

网络安全隐性杀手:三类危险的TXT文件

假如您收到的邮件附件中有一个看起来是这样的文件:QQ 放送.txt,您是不是认为它肯定是纯文本文件?我要告诉您,不一定!它的实际文件名可以是QQ 放送.txt{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}.{3050F4D8-98B5-11CF-BB8…

springboot篮球论坛系统

篮球论坛管理方面的任务繁琐,以至于每年都在篮球论坛管理这方面投入较多的精力却效果甚微,篮球论坛系统的目标就是为了能够缓解篮球论坛管理工作方面面临的压力,让篮球论坛管理方面的工作变得更加高效准确。 本项目在开发和设计过程中涉及到原理和技术有: B/S、java技术和MySQL…

杭电ctf杀手

这个文本是单词掺杂在[a-z]字符里的.一句完整的英语显然是好几个完整的单词连一起的.所以,我们可以分割这个大字符串,可以利用常见单词2000个做字典,用python跑一下.以上是思路,代码如下 def wordcount(dictory,zifuchuan):count0for i in range(len(dictory)):if(d…