如何系统地自学Python

引自:知乎-----《如何系统地自学Python-彭猫》
任何一门编程语言都有硬知识和软知识两部分,起步时主要任务就是掌握硬知识

1、硬知识

指的是编程语言的语法、算法和数据结构、编程范式等

适合初学者的教学材料:

  • 笨办法学python

  • 廖雪峰python2.7课程

  • The Hitchhiker's Guide to Python-着重于python最佳实践,不论专家还是新手

  • python官方文档 实践中大部分问题都可以在官方文档中找到答案

辅助工具

https://www.pythontutor.org
一个python对象可视化的项目,用图形辅助理解python中的各种概念

Python哲学:

用一种方法,最好是只有一种方法来做一件事

必要时,需要阅读讲解数据结构和算法的书,对理解和使用python中的对象模型有很大帮助。

2、软知识

指的是特定语言环境下的语法技巧、类库的使用、IDE的选择等

对于初学者而言,起步阶段最易走火,走弯路,在选择版本时一会2.7一会3.x,或者徜徉在类库的大海无法自拔,scrapy、numpy、django什么都要试试,或者参与什么什么活动等,都是一些没有意义的,做什么都是三分钟热度,结果什么都不会,慢慢自己的耐心以及热情都被消磨殆尽。

起步阶段核心任务:

掌握硬知识,软知识适当了解;选择一个方向努力走下去,切记贪多!

3、发展阶段

完成基础知识后,必定会感觉到空虚,怀疑这些语法是否真的有用,要使python发挥价值,就不能只停留在语法层面。

发展阶段的核心任务:

跳出Python,拥抱世界

python有很多分支:

  • 科学计算和数据分析

  • 爬虫

  • web网站开发

  • 游戏

  • 命令行实用工具等

在此阶段,不论是选择哪个方向,都需要大量的知识支撑,不可避免接触大量类库,阅读大量书籍。

3.1、类库方面:

英文版:Awesome Python项目
中文版:Awesome-Python-Cn

Python资源大全中文版,包括:Web框架、网络爬虫、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。

3.2、书籍方面:

科学和数据分析:

  • 集体智慧编程

  • 数学之美

  • 统计学习方法

  • Pattern Recognition And Machine Learing

  • 数据科学实战

  • 数据检索导论

爬虫:

HTTP权威指南
《用python写网络爬虫》
《python爬虫开发与项目实战》
《精通python网络爬虫》

Web网站:

HTML&CSS设计与构建网站

到这发现上述列举的大部分书籍与Python没有很大的直接联系,这其实也是跳出Python,拥抱世界的主体思想
Python与其他专业知识相结合才能解决更多的问题

4、深入阶段

此阶段的你对python可谓是了如指掌,那么你一定知道python也是用c语言实现的,相对于c语言,python在乎的是“表面”,如何能快速实现或者解决某些事情,而对语言内部,底层是怎样的并不关心,假如你只想好好做一个二流程序员拿着死工资,到此便可以结束了;但是,你是一个有追求的攻城狮,那么你一定会忍不住去拆开python的黑盒子,去真正理解它的设计思路。

推荐书籍:

  • Python源码剖析

真本书对python源码最核心部分,给出了详细的阐释,不过此书需要对c语言内存模型和指针有着良好的理解。

  • 编程范式

这是一门斯坦福大学公开课,讲师从各种编程范式的代表语言出发,给出了每种编程范式的最核心的思想,对c语言也有非常深入的讲解,对阅读python源码也有很大帮助,python的许多最佳实践都隐藏在那些众所周知的框架和类库中,如Django、Tornado等

5、结语

大同三千,择其一而从之,大多殊途同归,坚持才能胜利!

拓展

(1)、对于一个程序员来说,如何提高自己的编程能力至关重要:
X:代表思考解决方案、问题的时间
Y:代表实现代码的时间
编程能力 = F(X,Y)(X>Y)
要想提高编程能力就需要优化X 、Y与F(X,Y)

推荐书籍:
《Structure and Interpretation of computer Progam》简称SICP
又名《计算机程序的构造和解释》

(2)、入门阶段易忽视的几点:

  • 英语

  • 学会提问技巧

作为一枚程序员,搜索引擎的高级搜索是首先需要学会的,当单靠检索无法实现时,就需要靠提问解决问题了;
无论是stackoverflow,亦或者是知乎、其他论坛、大神博客等,学会提问至关重要。
提问前可以好好看看这篇文章:What-you-have-tried

  • 不做独狼

狼是群居动物,人亦如此,一匹狼的威胁远不如一群,在自学编程的路上,一个人学习远不如一群人来的更有效果
个人可以尝试搭建博客、个人网站,记录自己想法,订阅相关的博客,遇到问题可以有人帮忙答疑解惑,闭门自学只会固步自封!

stackoverflow上票选得出的程序员必读书籍前两位:
《code complete》-代码大全
《The Progmatic Programmer》-被称作代码小全

你可能感兴趣的:(如何系统地自学Python)