首页 > 如何提升Python编程能力?

如何提升Python编程能力?

我是业余学编程的,自己有一份工作,编程只是一个爱好,同时也是一个梦想。自己学过foxbase,C,看过C++,大致06年的时候,当时使用Ubuntu,然后就开始学习Python了,几乎一直在看,但这年下来,觉得自己的水平,貌似仍停留在一个懂基本语法的层次上。

说是懂基本语法,但在看些别人写的源码的时候,仍感觉有许多的地方读不下去,有不懂的地方太多。于是开始怀疑,自己真的懂了Python的基本语法了么?看到不少贴子说某某看了一两天Python语法然后就整出一个程序出来,居然我去读的时候,还读不懂,挺伤人的。

这一年多来,我接触Django比较多,也写过一两个站,现在JoinWEE.com这个站是用Django做出来的,但随着细节的地方越来越来,就越感觉自己有点应付不过来了。当自己遇到问题的时候,一般就是查看官方文档,或是Google找解决办法,然后再改。但很多的时候,仍感觉自己不是在写,而是在抄,理解的就有限。

写过一些爬网站的代码,如:

http://git.oschina.net/wwq0327/toy/blob/master/meiju/meijumi.py

但仍觉得自己不灵活,代码都写得挺死的,就算这些小代码,自己也老遇到问题,然后得花比较长的时间,比如半天,或一天才能搞定。

看过的书,基本上中文的Python相关的书,要么有电子版的,要么有纸版的,看了,不过也没啥
根本的变化,不清楚是不是自己的阅读方法有问题。

没有系统的看过Python的库,平时感觉能自己写的东西有限,或是找不到想要写的东西。没有人指导,就全是自己Google,或是看些书,看点文章。

基本情况就这样,希望大家能给点意见,如何能真正学好Python编程,分欢迎分享下你自己的学习语言的过程或是觉得很棒的方法。

编程方向的话,我比较喜欢网络和系统这两类。

当然如果你有好的文章分享也行。

谢谢


……觉得只要基础懂了python其实很容易用的,先学会算法和数据结构这种东西更好吧


看你学python的目的是什么了

如果是为了写网站的话,实现就好了,何必在意程序架构的好不好,代码写的好不好,如果只是喜欢编程,玩的开心就好了,何必纠结自己是个啥水平,如果是想成为python高手,可以参与一些开源项目,或者进入大公司工作,一个人闭门造车,是提高不了多少的,除非你是天才


多读多写,读的收获会远大于写

之前一个同事说的很好,python不需要特殊看什么书,读一读pep,订阅下Pycoder's Weekly这个邮件列表就可以了。

为什么说读要远大于写呢?因为如果不看别人代码,就算写再多年的python可能写出的东西都不会pythonic,enumerate,defaultdict,attrgetter,getattr(注意和前一个不一样),setattr,for else向这些玩意儿自己琢磨可能真心琢磨不出来,但却是是idiom的写法;怎么在遍历dict的时候删除元素,怎么最快最pythonic的方法按照dict value的顺序排序,这些pep里面都有解释,只有读才能了解,才有可能用到。

个人的建议

1.pep 主要看accept和finish的;
2.注意你的代码风格,相信pylint和pep8,autopep8这些工具会帮到你很多;
3.关注pythonic,idiom这些关键词,楼主可以google Transforming Code into Beau2ful,Idioma2c Python,一本很小的pdf,但绝对收益良多;
4.读源码,装个ipython 在一个func后面打两个??就可以读源码,楼主写django的,不知道有没有用过django rest,里面有些地方的实现就很精妙;
5.如果可以,多让别人review代码,会进步很快的;
6.建站的话确实问题很多,后台api设计也很蛋疼,有的时候不是简单的curd,有的时候会有维度之类很玄妙的设计方法,curd也应该考虑用rest,不过不是学python的讨论范围了。
7.哦对了,还有上面提到的邮件列表,可以关注下。

但很多的时候,仍感觉自己不是在写,而是在抄,理解的就有限。

但仍觉得自己不灵活,代码都写得挺死的,

就算这些小代码,自己也老遇到问题,然后得花比较长的时间,比如半天,或一天才能搞定。

初学一门语言做项目的时候大多数都是从搭积木开始的,用现成的组件搭出自己的应用,自己写的更多的是胶水代码。抄是应该的,Python吹嘘自己自带电池,电池就是给你用的,还有网上那么多优秀模块,作者写出来就是希望别人用的。

小工具的话,最重要的是快速实现功能,采用一些所谓灵活的设计,其实是白白增加了复杂度,得不偿失,所以写得死也是正常的。

因为对语言不熟练,经验不足,抓bug要花很长时间也是正常的。

我有个建议,抓了bug之后可以尝试总结一下为什么花这么多时间?bug本身比较难抓?那就没关系。某块不熟悉、似懂非懂?那就补习一下。搜到的代码,自己不是真正理解,就直接拿来拼凑出功能?这是重读一遍那些代码的好机会。抓bug的方式是东改改、西改改,希望凑巧改对?那是抓bug的姿势不对,没有追踪出产生bug的原因,就没有真正抓出bug。还有一个好习惯就是写测试,测试不能保证不出bug,但是可以保证同样的bug下次再出现的话能马上捕获到。除非代码写得清晰到不需要写测试的程度,还是写个测试安心。

补习不熟悉的知识点的建议:


我觉得,语言编程能力,是在做项目的过程中不断提升的

我修改一下回答,把和楼主的一段聊天发上来。

我个人感觉,做项目的时候,需要先整理一下思路,最好把一些东西给记录下来。对于codeing,出现一些问题,不要急于google,先自己想办法解决,能解决以后,看看别人是怎么去搞定这个问题。然后可以把它写到博客,最好可以整理一遍解决方案,加上你自己的绝决步骤和思路。然后列出参考资料和反思。 其次,多参与开源社区的一些讨论,帮助别人解决问题。还是和上面一样,做好整理,写到blog 时不时看看整理出的blog,嗯,我相信会有收获的。

【热门文章】
【热门文章】