PyHubWeekly | 第二期:GitHub上优质的Python项目

简介: 上一周,我写了一篇总结GitHub上优质Python项目的文章,文章发出之后在公众号和知乎受到很多同学的喜爱和认可,这有一些出乎我的意料。于是,经过反复思索,我决定后续开设一个模块PyHubWeekly,每周更新一次,介绍一些有趣、实用的项目,对于这个模块,我的想法是不追求数量而追求质量,不会为了拼凑数量而一味的去美化一个项目。

前言

上一周,我写了一篇总结GitHub上优质Python项目的文章,文章发出之后在公众号和知乎受到很多同学的喜爱和认可,这有一些出乎我的意料。

思索一下,这的确是一件很值得去做的事情。这一年来我养成了一个每天逛一逛GitHub的习惯,因为我个人对新鲜事物充满着好奇心,或者是有趣的项目、或者是实用的小工具,我期望能够在GitHub上能够遇到我想要的东西。

GitHub是一个鱼龙混杂的地方,上面的确有很多不错的开源项目,但是,更多的是一些灌水的项目,例如,某些教育机构的大作业,例如,那些每天刷榜的中文无聊的项目。因此,虽然我每天都会花费一部分时间去浏览GitHub,但是真正让我内心觉得这个项目“不错”的却少之又少。我想,也许这就是为什么我上一篇文章受到认可的原因吧。

既然这样,我想倒不如花费一部分精力去开辟一些专门介绍GitHub上优质Python项目的版块,名称就叫PyHubWeekly,主要宗旨有两点:

  • 每周更新一次
  • 精选GitHub上优质Python项目

对于这个模块,我的想法是不追求数量而追求质量,换句话说,也许有的时候能介绍10个项目,有的时候只介绍1个项目,不会为了拼凑数量而一味的去美化一个项目,把它描绘的天花乱坠。也许有一天Python被淘汰了,而且优质的项目有穷有尽,再或者各位关注者对于这类文章失去了兴趣,那样的话,PyHubWeekly这个版块也就走到了尽头。

另外,针对PyHubWeekly,我的定位是通过每篇文章去介绍一些有趣,值得去了解的GitHub项目,因此,对于每个项目不会去深入介绍,会简单的介绍一些它的功能以及它的特点。如果其中我个人认为哪个项目非常不错,或者各位同学对于哪个项目特别感兴趣,我会单独再写一篇详细介绍这个项目的文章。

当然,无论写哪方面的文章,出发点都会坚持自己的初心,坚持原创、坚持与众不同,希望自己分享能够切实的帮助到需要的同学。

下面就开始介绍本期的5个项目。

1. Gooey

Star:8.5k

链接:https://github.com/chriskiehl/Gooey

这是一个将Python 2或3控制台程序转换为GUI应用程序工具,

8.jpg

Gooey通过简单的在argarse上调用装饰器的方式就可以实现程序的界面化,如果需要进行更精细的调整,则可以使用嵌入式替换GooeyParser代替ArgumentParser,

9.gif


2. memory_profiler

Star:2k

链接:https://github.com/pythonprofilers/memory_profiler

Python是一门相对简单的编程语言,这里所说的简单是指入门简单。因此,很多人忽略了程序底层的内容,例如,空间复杂度、时间复杂度等。对于很多人来说写完程序能够跑通即可,但是一个好的程序要兼备考虑程序的复杂度、内存占用等。

这是一个依赖于psutil的python模块,用于监视进程的内存消耗,以及对python程序的内存消耗进行逐行分析。

@profile
def my_func():
    a = [1] * (10 ** 6)
    b = [2] * (2 * 10 ** 7)
    del b
    return a
if __name__ == '__main__':
    my_func()

执行程序,

$ python -m memory_profiler example.py
Line #    Mem usage  Increment   Line Contents
==============================================
     3                           @profile
     4      5.97 MB    0.00 MB   def my_func():
     5     13.61 MB    7.64 MB       a = [1] * (10 ** 6)
     6    166.20 MB  152.59 MB       b = [2] * (2 * 10 ** 7)
     7     13.61 MB -152.59 MB       del b
     8     13.61 MB    0.00 MB       return a

3. pyecharts

Star:7.8k

链接:https://github.com/pyecharts/pyecharts

在Python开发中,提到画图应该十有八九会想到matplotlib,它是一个老牌且强大的绘图库,但是,在使用过程中有一些弊端,例如,不适合离线查看、支持的绘图接口较为单一。

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。它能够把绘图结果保存为一个html文件,能够动态展示绘图结果,且随时可以打开查看。另外,它支持的绘图类型非常丰富。

10.gif

4. wtfpython

Star:18.6k

链接:https://github.com/satwikkansal/wtfpython

wtfpython这个Python项目两年前就有所耳闻,首先说一下它的全名,比较粗俗“What the f*ck Python!”,就如同前面所说的那样,虽然很多人认为Python非常容易,但是它也有很多不为人知的特性。

有很多点按照我们的理解应该是这样的,但是当运行之后却发现和我期望的结果有很大出入,具体问题出现在哪了,却很难找出来。wtfpython这个项目就总结了这些不为人知的特性,能够让你发现更多Python令人惊奇的地方。

例如,下面这个例子,

some_dict = {}
some_dict[5.5] = "Ruby"
some_dict[5.0] = "JavaScript"
some_dict[5] = "Python"

输出,

>>> some_dict[5.5]
"Ruby"
>>> some_dict[5.0]
"Python"
>>> some_dict[5]
"Python"

按照正常的结果some_dict[5.0]不是应该输出“JavaScript”吗?为什么输出了“Python”?下面就是解释,

11.png

5. tqdm

Star:12.9k

链接:https://github.com/tqdm/tqdm

tqdm是一个Python进度条工具,如果刚开始学习Python时,我会对它不屑一顾,编程语言本身还没有学明白,为什么要用这些花里胡哨的东西?简直就是鸡肋!

但是,当开发项目久了以后才发现,它有着不可替代的价值。就如同我们排号吃饭一样,我们希望实时的监控着当前事件进行到什么程度了,Python开发也是这样,我们不能一直把它挂在那里,留给我们一个空白的shell,具体是进程死掉了,还是读数据库时出现了问题,都不清楚,有着这个进度条,能够对我们的运行过程一目了然。

12.gif


相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
56 2
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
79 3
|
19天前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
|
1月前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
53 1
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
56 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
93 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
1月前
|
存储 开发工具 Python
【Python项目】外星人入侵项目笔记
【Python项目】外星人入侵项目笔记
38 3
|
1月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
51 2
|
1月前
|
机器学习/深度学习 算法框架/工具 Python
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
67 0
|
2月前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
在现代Web开发领域,前后端分离已成为一种主流架构模式,它促进了开发效率、提升了应用的可维护性和可扩展性。随着实时数据交互需求的日益增长,WebSocket作为一种在单个长连接上进行全双工通讯的协议,成为了实现前后端实时通信的理想选择。在Python Web项目中,结合Flask框架与Flask-SocketIO库,我们可以轻松实现WebSocket的实时通信功能。
58 2
下一篇
无影云桌面