本人是大二的学生,平时无聊用python给mac写了一个小的天气预报的项目, 发到了github上了,https://github.com/jamesxu182/myweather 。非常好奇大型软件是怎么开发的,复杂的ui是如何设计的。敢问大神github上有哪些简单的,适合我这个水平的python项目。回复内容:
ultimaker 3d打印机的上位机软件cura的ui是python写的,用的wxpython。当然,引擎是c++写的。我个人觉得挺有趣的。软件规模适中,功能完整,包含了跨平台配置的知识,和c++引擎通信的知识,opengl等。涉及一些3d打印方面的专业知识但是并不复杂,重点还是在ui和功能设计daid/cura · github
gleitz/howdoi · github一个很有趣的命令行小工具,代码不多,写的非常 pythonic。再推荐几个适合阅读的好项目,不过可能比较大,要花点功夫去读。kennethreitz/requests · githubmitsuhiko/flask · githubkennethreitz/tablib · githubmitsuhiko/werkzeug · github
tornado算么。
bottle.py
shadowsocks就不错啊,好像作者去知乎了
具体还看想学些那方面了,也要看自身的基础如何,同时也建议分阶段来看。
不过具体的话还是依题主的情况来说好了,不然这个问题也就没有具体的答案。
首先可以说点不想干的话题,比如:
题主的代码仓库里好像没有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/pyramidkennethreitz/requestsdefnull/bottleandymccurdy/redis-pydouban/douban-clientmitsuhiko/jinja2
这些项目大多是看过源码的,不过主要还是有文档的看文档。不过要说简单的,适合题主水平的,可以看下redis-py、requests和douban-client,pyramid这种结构比较庞大的,一开始上手看源码可能会有点吃力(依赖zope.interface的项目大多都这样,比如twisted,scrapy)。bottle的话虽然简单,但是没有什么太多实际可以借鉴的地方,毕竟把全部代码揉在一起,在ide还没有智能到可以自动分页的时代,看起来实在是太恶心了…
其他有些项目也是不错的,不过本人毕竟没有细看过源码(比如shadowsocks),这里也就不做推荐了。所以真要推荐的话,题主可以在上面的六个里面随机选两个了解下。有时候上手难点也无所谓,只要不是太恶心的项目,也还是能摸透的(实不相瞒,pyramid从入门到玩转大概有一年的时间间隔)。
而django之流,拿来用还可以,深入的话其实也是个巨坑,当然这里我还是不黑django了…
最后留点相关提示,有时候学习一个项目,具体的代码实现不是重点,而是如何一步步演进且维护到现在,那些最初留下来的,以及后来被舍弃掉的,这些决策,其实也可以理解为一种潜在的设计模式,而所有这些潜藏在项目之下的,才是更值得学习的地方。至于为什么前面说六选二呢,因为单从一个项目去认知整个python世界,也是片面的,于是乎这里就不嘲讽django和tornado了。所以进而推广,题主要是有志于做点大项目,有空应该多了解些工业上常用的语言,参与些实战项目攒攒经验,毕竟单从python去了解这个编程世界也是片面的,于是乎这里我就不黑js了。
n0tr00t/sreg · github这个,可以查看指定email或手机号码或用户名都注册过哪些网站。也就200行左右哦。还可以扩展网站注册查询插件一看吓一跳,原来那些个听都没听过的网站我都注册过?
django
强烈推荐mininet,搞网络的mininet源码是必读的。代码结构清晰易读,基本上一两个小时就能够完全读懂mininet,但要理解里面的精髓,还是需要时日的。
我推荐requests,可以学习python代码和注释的风格