你是如何自学 Python 的?

2018-09-20 15:40:30 浏览数 (1)

好久不见

---------------------------------------

1. 总体来讲,找几本靠谱的书,由浅入深,边看边练。

我是从去年下半年开始学习Python / ML / CV,利用每天晚上22:00- 01:00的业余时间,每天进行,几乎很少间断。

2. 以下是我自己训练Python的一些小经验。

2.1 基础入门

当然是因工作需要而学,所以有倾向性,会以Data Analysis或者现在时髦的说法叫Data Science方向为主。 01-《a byte of python 中文版》绝对入门级,扫盲,零基础的人都可以看。当时我大概花了三天撸完,照着敲了一遍代码。稍微有点感觉了。 02- 看斯坦福的在线教程,入门级。Python Numpy Tutorial英文好的同学可以看看,这个教程我看的不多。主要是因为自己喜欢看纸质书。 03-同时继续夯实python语言本身,建议看《Python Cookbook 中文版》,我也时不时的会看

2.2 以上基本概念弄熟练后。接下来看你要做什么了?选个方向。

  • 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
  • 《三天搞定Python基础概念之第二天》Day2
  • 《三天搞定Python基础概念之第三天》 Day3

英文原版可见链接:三天搞定Python基本功

2.4. 进阶:顺着【数据分析】这个方向,把金融类的数据分析搞透彻。

在看完《利用Python进行数据分析》之后,强烈建议看《Python 金融大数据分析》一书。

我是自学的Python。从对Python一无所知,到在博客上写Python相关的系列文章(Python快速教程),前后有将近三年的时间。期间有不少门槛,但也充满乐趣。乐趣是自学的最大动力。Python是一个容易编写,又功能强大的动态语言。使用Python,可以在短短几行内实现相当强大的功能。通过自己写一些小程序,迅速的看到效果,发现问题,这是学习Python最便利的地方。

在学习Python之前,可以了解一下Python的特点和设计理念(Python简史)。在设计之初,Python就试图在复杂、强大的C和方便、功能有限的bash之间,找到一个平衡点。Python的语法比较简单,用起来很方便,因此有些人把它当作脚本语言使用。但Python要比普通的脚本语言功能强大很多。通过良好的可拓展性,Python的功能相当全面,应用面很广:web服务器,网络爬虫,科学运算,机器学习,游戏开发…… 当然,天下没有免费的午餐,也没有完美的语言,Python为了达到上述两点,有意的牺牲了Python的运行速度。如果你是在编写高业务量、运算量的程序,可能Python并不是最好的选择。


Python的主体内容大致可以分为以下几个部分:

  1. 面向过程。包括基本的表达式,if语句,循环,函数等。如果你有任何一个语言的基础,特别是C语言的基础,这一部分就是分分钟了解下Python规定的事。如果你没有语言基础,建议从Python Programming为参考书。这本书是计算机导论性质的教材,不需要编程基础。
  2. 面向对象,包括面向对象的基本概念,类,方法,属性,继承等。Python是面向对象的语言,“一切皆对象”。面向对象是很难回避的。Python的面向对象机制是相对比较松散的,不像Java和C 那么严格。好处是容易学,容易维护,坏处是容易犯错。
  3. 应用功能,包括IO,数据容器如表和词典,内置函数,模块,格式化字符串等。这些在其它语言中也经常出现,有比较强的实用性。
  4. 高级语法,上下文管理器,列表推导,函数式编程,装饰器,特殊方法等。这些语法并不是必须的,你可以用前面比较基础的语法实现。学这些高级语法的主要原因是:它们太方便了。比如列表推导一行可以做到的事情,用循环结构要好几行才行。

学习Python主体最好的参考书是Learning Python,它非常全面,满满的都是干货。虽然很厚,读起来并不难读。另一个是参考官网的教程Python.org


Python号称“Battery Included",也就是说,功能都已经包含在了语言中。这一自信,主要来自Python功能全面的标准库。标准库提供了许多功能模块,每个模块是某一方面功能的接口,比如文件管理,操作系统互动,字符处理,网络接口,编码加密等等。

The Python Standard Library中,你可以看到标准库模块的列表。这里也是标准库最好的学习资料。如果想找书,我只看到过两本关于标准库的: Python Essential Reference The Python Standard Library by Example

说实话,这两本都不算很好的标准库教材,而标准库的参考书也确实很难写。因为标准库只是调用功能的接口,最终实现的是Python和系统的互动。这需要很强的系统知识,比如文件系统知识,进程管理,http原理,socket编程,数据库原理…… 如果这些知识都已经准备充分,那么标准库学起来完全没有难度。然而,这些背景知识的学习并非一朝一夕的事情。

更深入的Python学习也是如此,需要大量的背景知识,而不是Python自身。如果你对Python的编译和运行机制感兴趣,你可以往Python底层这一深度挖。如果你对应用感兴趣,你可以多学习几个自己用的上的第三方包。学到这个时候,就是要自己探索的广阔空间了。


基本上,学过主体内容之后,Python还是要靠做项目来练习。有不少小练习题类型的资料,比如Python Cookbook。但更好的方式是自己去想一些应用场景,用Python来解决。Python功能全面,所以不要担心自己想的问题Python解决不了 (基本上Python解决不了的问题,别的语言也没戏)。比如我学习多线程的动力,就因为要并行的下载大量的文件。基本上一个项目下来,会用到Python好几块的内容,知识会特别巩固。

最后,和其它任何知识的学习一样,笔记和总结很重要。在看参考书和看网页时,可以做一些笔记。等到学了一段时间后,可以把笔记整理成更有条理的参考卡片(reference card),或者写博客。这也是我写“Python快速教程”的主要原因。另外这个教程内容的顺序,也是我认为的比较合理的学习顺序,仅供参考。


作者:MurphyWan 链接:https://www.zhihu.com/question/20702054/answer/236412402 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 人点赞