你是如何自学 Python 的?

来源:互联网 发布:淘宝买兔子红烧 编辑:程序博客网 时间:2024/05/21 05:40
https://www.zhihu.com/question/20702054
你是如何自学 Python 的?


        去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。


这是我在过去几家公司招聘到工程师,Python入职培训的过程。时间分为4周,全部自学,仅提供大纲。适用于Web方向:
1、Week1:读完《简明Python教程》,适应Python开发环境
2、Week2:写个爬虫,需要深入了解re、urllib2、sqlite3、threading,Queue等几个模块。需要用上多线程抓取,正则表达式分析,并发资源控制,重新开启程序自动继续抓取和分析
3、Week3:学习一种Web开发框架,推荐Flask、webpy之类的,学个数据库接口如sqlite3,写个简单的web应用如博客
4、Week4:给产品做个小功能并走完测试和上线流程,各个时期是不同的我在之前的几家公司招聘工程师时,学过Python的其实较少。更常见的情况是人聪明,招来再学Python。就是按照如上流程。这个流程安排的挺轻松的,我找到的所有人都成功完成了这个流程。并且之后工作也很顺利。



我的评论:
  专职学4周 又有其它语言基础,又有压力,应该差不多
  业余学的话,要花几倍时间了



Python Resource http://dylanninin.com/blog/2013/11/23/python_resource.html
挺好的


学习Python主体最好的参考书是Learning Python,它非常全面,满满的都是干货。虽然很厚,读起来并不难读。另一个是参考官网的教程Python.org
阶段一:前辈领进门。第一眼是一个前辈给我看了看Python的代码,因为自己最早学习的是Java语言,第一眼看到Python的时候,前辈说,“Python是面向对象的”,然后就 打印了几句代码。可我怎么也看不出到底哪里是“面向对象”的。前辈说“在Python里,一切皆对象”,我才有点领悟的说道:“原来把什么看成对象,就是面向对象”,哈哈。
阶段二:开始看的是《Dive into Python》、《Leaning python》、《Python Doc》。因为有很多语言学习经历,很快就完成了初步语法和使用学习。太复杂的特性还是在使用中逐步掌握的。
阶段三:开始使用Python做自己的一些日常工作。比如Python搜索文件,Python批量处理等,使用最多的还是re模块和socket相关模块。写了大量的例子,让自己对Python更加喜爱,也更加熟悉。此时翻阅最多的是《Python Doc》的指南。不管是语言参考、库参考、Demo参考,都有大量可使用的内容,内容质量很高堪比JDK。
阶段四:生产上马。开始使用Django,Flask,Tornado开发一些web应用,写一些日常使用的工具包等。逐步提升设计能力,和整体代码的管理能力。
阶段五:更合理的分配好C,Java,Python三门语言各自擅长的部分。把合适的语言用到合适的地方。尽管一门语言有时候可以搞定所有的,但用擅长的语言解决合适的问题才是效率最高的。这也是“Python的大道至简”的理念带给我的帮助和认识。
PS:其中过程中主要的一些方法:
1、看书。学习的基础。
2、自己本地练习。编程还是要实践出真知。
3、资料查询。google,stackoverflow等多关注。
4、交流。各种论坛上的python group,论坛。最早去的CU,JavaEye,不过现在貌似去的少了。google group 必须订阅。学习+实践+总结,掌握语言的法宝。




有哪些 Python 大牛的 blog 推荐?https://www.zhihu.com/question/20474582/answer/15227114
和邮件列表http://groups.google.com/group/python-cn/topics
http://pycoders.com/
https://github.com/vinta/awesome-python



后来我渐渐开始掌握Python的思考方式是在Codeforces上刷题——这上面有些非常简单的模拟题,用Python做正合适,而且在这上面还可以看到别的给这道题提交程序的人的代码。我先自己用Python写一个,等到Accepted以后,再看看那些同样Accepted的、同样用Python做这一题的人的程序是怎么写的,然后尝试按照他们的思路简化自己的程序,到后来甚至尝试能不能进一步简化他们的程序。“简化”指的不是追求影响可读性的短码,短码和简洁之间,自己尝试着把握。总之就是写一个程序,体会别人的,不断改进自己的。

平时, 订阅并关注着一些前辈:
酷壳 – CoolShell.cn
阮一峰的网络日志
EVILCOS | 懒人在思考,安全(黑客)、架构、团队的各种观点与分享
学习他们对生活的感悟和最新的姿势, 运用到我的生活中来



0x05--创造价值在某宝上兼职程序代写了一段时间, 排名第一的店里的所有Python单子都是我的完成的, 还有很多本来客户要求用C/C++或C#的订单, 都被我忽悠成Python的了....Python的开发效率让我兼职第一个月的收入就甩开我本职工作薪水好几条街....好几倍好么..实在是太快了...在兼职的这段时间里, 我的姿势长进速度迅猛, 比那书上的例子.......(不黑书上的例子了, 没有家里的黄脸婆你哪傍的上小三啊)...在实践中学习是最快的, 也是最好的.

我的评论:

    这个太牛了,不知道如何操作的,估计是和商家合作吧


1,找到合适的入门书籍,大致读一次,循环啊判断啊,常用类啊,搞懂(太难的跳过)
2,做些简单习题,字符串比较,读取日期之类 Python Cookbook不错(太难太无趣的,再次跳过,保持兴趣是最重要的,不会的以后可以再学)
3,加入Python讨论群,态度友好笑眯眯(很重要,这样高手才会耐心纠正你错误常识)。很多小问题,纠结许久,对方一句话点播思路,真的节约你很多时间。耐心指教我的好人,超级超级多谢。
4,解决自己电脑问题。比如下载美剧,零散下载了2,4,5,8集,而美剧共12集,怎样找出漏下的那几集?然后问题分解,1读取全部下载文件名,2提取集的数字,3数字排序和(1--12)对比,找出漏下的。
5,时刻记住目的,不是为了当程序员,是为了解决问题。比如,想偷懒抓网页内容,用urllib不行,用request也不行,才发现抓取内容涉及那么多方面(cookie,header,SSL,url,javascript等等),当然可以听人家劝,回去好好读书,从头读。或者,不求效率,只求解决,用ie打开网页再另存为行不行?ie已经渲染过全部结果了。问题变成:1--打开指定的10个网页(一行代码就行)。更复杂的想保存呢?利用已经存在的包,比如PAM30(我的是Python3),直接打开ie,用函数outHTML另存为文本,再用搜索函数(str搜索也行,re正则也行)找到数据。简单吧?而且代码超级短。
6,保持兴趣,用最简单的方式解决问题,什么底层驱动,各种交换,留给大牛去写吧。我们利用已经有的包完成。
7,耐心读文档,并且练习快速读文档。拿到新包,找到自己所需要的函数,是需要快速读一次的。这个不难,读函数名,大概能猜到是干嘛的,然后看看返回值,能判断是不是自己需要的。
8,写帮助文件和学习笔记,并发布共享。教别人的时候,其实你已经自己再次思考一次了。我觉得学程序就像学英文,把高频率的词(循环,判断,常用包,常用函数)搞懂,就能拼装成自己想要的软件。






 以上基本概念弄熟练后。接下来看你要做什么了?选个方向。
1、Web开发方向
那么建议看简单的框架flask,那么推荐《Flask Web开发:基于Python的Web应用开发实战》。(我只扫一眼目录,因主要方向不在此处)
2、数据分析方向
建议看《利用Python进行大数据分析》,非常棒!强烈建议看。主要讲Pandas库,讲数据分析。很多金融巨头,用Python进行数据分析。引用大神Kirat的话说,“它正在快速代替主流金融机构中使用的工具和语言,并成为事实上的标准”。我花了1个月左右时间,一个字一个字啃完。同时边敲代码。
3、科学计算方向
建议看《python_sci用python进行科学计算》。
4、AI的机器学习方向
建议看《Hands-on ML with Scikit-learn and TensorFlow》,还没有中文版,我在看。若有同学需要中文版,可以告知我,我视需求而定,是否将其翻译成中文版。
5、AI的计算机视觉方向建议看《Python计算机视觉编程》,我还在看,虽然看得不多。
6、网络爬虫方向这里不多作介绍。

2.3  夯实:若有同学对【数据分析方向】感兴趣这里强烈推荐Yupeng Jiang博士撰写的《三天搞定Python基本功》,只用三天时间可以了解Python数据分析的广度和所涉及的概念,是诚意之作,十分难得!因原文是用英文写成,给英国伦敦大学学院的本科生、研究生上课用的。我将其翻译成了中文,便于自己将来快速复习用。在征得jiang博士的同意后,分享给大家。
链接:《三天搞定Python基础概念之第一天》Day1 
https://link.zhihu.com/?target=https%3A//github.com/MurphyWan/Python-first-Practice/blob/master/README.md
《三天搞定Python基础概念之第二天》Day2
https://link.zhihu.com/?target=https%3A//github.com/MurphyWan/Python-first-Practice/blob/master/D2_of_3Day_DoneWithPython.md
《三天搞定Python基础概念之第三天》 Day3
https://link.zhihu.com/?target=https%3A//github.com/MurphyWan/Python-first-Practice/blob/master/D3_of_3Day_DoneWithPython.md
英文原版可见链接:三天搞定Python基本功


2.4.  进阶:顺着【数据分析】这个方向,把金融类的数据分析搞透彻。在看完《利用Python进行数据分析》之后,强烈建议看《Python 金融大数据分析》一书。


Python学习笔记-王纯业