引自:知乎-----《如何系统地自学Python-彭猫》
任何一门编程语言都有硬知识和软知识两部分,起步时主要任务就是掌握硬知识
1、硬知识
指的是编程语言的语法、算法和数据结构、编程范式等
适合初学者的教学材料:
笨办法学python
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、书籍方面:
科学和数据分析:
爬虫:
HTTP权威指南
《用python写网络爬虫》
《python爬虫开发与项目实战》
《精通python网络爬虫》
Web网站:
到这发现上述列举的大部分书籍与Python没有很大的直接联系,这其实也是跳出Python,拥抱世界的主体思想
Python与其他专业知识相结合才能解决更多的问题
4、深入阶段
此阶段的你对python可谓是了如指掌,那么你一定知道python也是用c语言实现的,相对于c语言,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》-被称作代码小全