欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

GitHub 上有什么值得学习,简单的,易读的 Python 项目?

程序员文章站 2022-05-14 22:02:48
...
本人是大二的学生,平时无聊用Python给Mac写了一个小的天气预报的项目, 发到了github上了,github.com/jamesxu182/M
非常好奇大型软件是怎么开发的,复杂的UI是如何设计的。
敢问大神github上有哪些简单的,适合我这个水平的Python项目。

回复内容:

Ultimaker 3D打印机的上位机软件Cura的UI是Python写的,用的Wxpython。当然,引擎是C++写的。我个人觉得挺有趣的。软件规模适中,功能完整,包含了跨平台配置的知识,和C++引擎通信的知识,OpenGL等。涉及一些3D打印方面的专业知识但是并不复杂,重点还是在UI和功能设计
daid/Cura · GitHub

GitHub 上有什么值得学习,简单的,易读的 Python 项目? gleitz/howdoi · GitHub
一个很有趣的命令行小工具,代码不多,写的非常 Pythonic。

再推荐几个适合阅读的好项目,不过可能比较大,要花点功夫去读。
  • kennethreitz/requests · GitHub
  • mitsuhiko/flask · GitHub
  • kennethreitz/tablib · GitHub
  • mitsuhiko/werkzeug · GitHub
tornado算么。 bottle.py *就不错啊,好像作者去知乎了

具体还看想学些那方面了,也要看自身的基础如何,同时也建议分阶段来看。

不过具体的话还是依题主的情况来说好了,不然这个问题也就没有具体的答案。


首先可以说点不想干的话题,比如:

  • 题主的代码仓库里好像没有ignore掉pyc文件...
  • 在看到题主用了bs4的同时我还看到了urllib2... github.com/Jamesxu182/M
  • 以及从这里可以看出题主的前端水平似乎... github.com/Jamesxu182/s

由此似乎可见:

  • 题主git还没玩熟 or 有点不拘小节
  • 对python的生态圈还不是很了解 or 不屑于用requests那样的装逼库
  • ... ( ╯□╰ )

然后,作为一名从web开发起步的老菜鸟,先分享下大概的学习经历好了。


鄙人大概也是大二的时候(2012年秋)真正开始用python的,当然前面有玩flash的背景,所以对同类的脚本语言,上手还算比较习惯。比如当时的ActionScript2.0的水平大概是这样子的(300行左右代码):koalangelion.deviantart.com


中间的过程还是从略好了,毕竟是业余玩家。到现在零零碎碎也有两年了吧,现在的python水平… 还真不好说,简单举个粒子大概是这样的:gitcafe.com/restait/buf

所以回答这个问题的话,首先我觉得这些编程的东西,对于题主来说,需要学习的还有很多。。。

当然能在大二就用python写个mac上用的小工具还知道放到github上,且不说代码水平,至少这种意识还是挺不错的。然而人和人之间,时代与时代之间自然是有差别,自然同为大学生,我还买不起mac,自然同为大学生,我也不能和那些初二就混IRC还发pull request的中学生相比…

所以我觉得题主可能更在意的是怎么组织一个大型的软件项目,以及如何造一个复杂的UI。而这些东西,其实github上面不是很多,能作为学习参考的就不多了,而使用python作为主力语言的就更少了... 原因大家懂的,至少开源出来的不是很多。


而且这里有两点提示:一是python不太适合用来构造一个完整的大型项目,二是python在图形界面这边确实还是短板。


然后有了上面这些铺垫,感觉再推荐些好的github项目也不迟。这里我觉得其实可以避免一个误区,就是很多好的python项目,恰恰不在github上面,比如SQLAlchemy(bitbucket,你懂的),比如BeautifulSoup(lauchpad)。所以这两个虽然也是适合研读的好项目,不过因为不符合github这个约束,类似的也就不涉及了。


先说些个人觉得对自己学习python比较有益的且在github上托管的项目好了(web开发向top6,下面的条目不含github.com/前缀):

  • pylons/pyramid
  • kennethreitz/requests
  • defnull/bottle
  • andymccurdy/redis-py
  • douban/douban-client
  • mitsuhiko/jinja2

这些项目大多是看过源码的,不过主要还是有文档的看文档。不过要说简单的,适合题主水平的,可以看下redis-py、requests和douban-client,pyramid这种结构比较庞大的,一开始上手看源码可能会有点吃力(依赖zope.interface的项目大多都这样,比如twisted,scrapy)。bottle的话虽然简单,但是没有什么太多实际可以借鉴的地方,毕竟把全部代码揉在一起,在IDE还没有智能到可以自动分页的时代,看起来实在是太恶心了...


其他有些项目也是不错的,不过本人毕竟没有细看过源码(比如*),这里也就不做推荐了。所以真要推荐的话,题主可以在上面的六个里面随机选两个了解下。有时候上手难点也无所谓,只要不是太恶心的项目,也还是能摸透的(实不相瞒,pyramid从入门到玩转大概有一年的时间间隔)。


而django之流,拿来用还可以,深入的话其实也是个巨坑,当然这里我还是不黑django了...


最后留点相关提示,有时候学习一个项目,具体的代码实现不是重点,而是如何一步步演进且维护到现在,那些最初留下来的,以及后来被舍弃掉的,这些决策,其实也可以理解为一种潜在的设计模式,而所有这些潜藏在项目之下的,才是更值得学习的地方。至于为什么前面说六选二呢,因为单从一个项目去认知整个python世界,也是片面的,于是乎这里就不嘲讽django和tornado了。所以进而推广,题主要是有志于做点大项目,有空应该多了解些工业上常用的语言,参与些实战项目攒攒经验,毕竟单从python去了解这个编程世界也是片面的,于是乎这里我就不黑js了。

n0tr00t/Sreg · GitHub

这个,可以查看指定Email或手机号码或用户名都注册过哪些网站。
也就200行左右哦。
还可以扩展网站注册查询插件


一看吓一跳,原来那些个听都没听过的网站我都注册过? Django 强烈推荐mininet,搞网络的mininet源码是必读的。代码结构清晰易读,基本上一两个小时就能够完全读懂mininet,但要理解里面的精髓,还是需要时日的。 我推荐requests,可以学习Python代码和注释的风格