GitHub 上有什么值得学习,简单的,易读的 Python 项目?
非常好奇大型软件是怎么开发的,复杂的UI是如何设计的。
敢问大神github上有哪些简单的,适合我这个水平的Python项目。
回复内容:
Ultimaker 3D打印机的上位机软件Cura的UI是Python写的,用的Wxpython。当然,引擎是C++写的。我个人觉得挺有趣的。软件规模适中,功能完整,包含了跨平台配置的知识,和C++引擎通信的知识,OpenGL等。涉及一些3D打印方面的专业知识但是并不复杂,重点还是在UI和功能设计daid/Cura · GitHub
gleitz/howdoi · GitHub
一个很有趣的命令行小工具,代码不多,写的非常 Pythonic。
再推荐几个适合阅读的好项目,不过可能比较大,要花点功夫去读。
- kennethreitz/requests · GitHub
- mitsuhiko/flask · GitHub
- kennethreitz/tablib · GitHub
- mitsuhiko/werkzeug · GitHub
具体还看想学些那方面了,也要看自身的基础如何,同时也建议分阶段来看。
不过具体的话还是依题主的情况来说好了,不然这个问题也就没有具体的答案。
首先可以说点不想干的话题,比如:
- 题主的代码仓库里好像没有ignore掉pyc文件...
- 在看到题主用了bs4的同时我还看到了urllib2... https://github.com/Jamesxu182/MyWeather/blob/master/getWeathers.py#L6
- 以及从这里可以看出题主的前端水平似乎... https://github.com/Jamesxu182/skedody/blob/master/index.html#L32
由此似乎可见:
- 题主git还没玩熟 or 有点不拘小节
- 对python的生态圈还不是很了解 or 不屑于用requests那样的装逼库
- ... ( ╯□╰ )
然后,作为一名从web开发起步的老菜鸟,先分享下大概的学习经历好了。
鄙人大概也是大二的时候(2012年秋)真正开始用python的,当然前面有玩flash的背景,所以对同类的脚本语言,上手还算比较习惯。比如当时的ActionScript2.0的水平大概是这样子的(300行左右代码):http://koalangelion.deviantart.com/art/Restend-379547522
中间的过程还是从略好了,毕竟是业余玩家。到现在零零碎碎也有两年了吧,现在的python水平… 还真不好说,简单举个粒子大概是这样的:https://gitcafe.com/restait/buffer/tickets/22
所以回答这个问题的话,首先我觉得这些编程的东西,对于题主来说,需要学习的还有很多。。。
当然能在大二就用python写个mac上用的小工具还知道放到github上,且不说代码水平,至少这种意识还是挺不错的。然而人和人之间,时代与时代之间自然是有差别,自然同为大学生,我还买不起mac,自然同为大学生,我也不能和那些初二就混IRC还发pull request的中学生相比…
所以我觉得题主可能更在意的是怎么组织一个大型的软件项目,以及如何造一个复杂的UI。而这些东西,其实github上面不是很多,能作为学习参考的就不多了,而使用python作为主力语言的就更少了... 原因大家懂的,至少开源出来的不是很多。
而且这里有两点提示:一是python不太适合用来构造一个完整的大型项目,二是python在图形界面这边确实还是短板。
然后有了上面这些铺垫,感觉再推荐些好的github项目也不迟。这里我觉得其实可以避免一个误区,就是很多好的python项目,恰恰不在github上面,比如SQLAlchemy(bitbucket,你懂的),比如BeautifulSoup(lauchpad)。所以这两个虽然也是适合研读的好项目,不过因为不符合github这个约束,类似的也就不涉及了。
先说些个人觉得对自己学习python比较有益的且在github上托管的项目好了(web开发向top6,下面的条目不含http://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代码和注释的风格