这个系列我今天就再带着大家梳理一遍,虽然我之前也讲过这系列,因为...有人还是不会啊!
我想说的就两个点:
第一:学Python以实用性为导向
第二:理解和运用
学Python死记硬背作用不大的,从来没听过哪个程序员是靠背学会编程的,要理解代码是干什么用的,为什么要这么用?
比如Python的函数和控制语句,是真正去解决问题的过程。
如何实现判断和循坏?如何将固定的功能模块封装成函数?你能看懂它的概念和语法,但让自己开始写起代码,就无从下手。
再就是学了就要用起来,学以致用!
Python讲究实用性,等到理论学的差不多了再去实操这是最大的学习误区,学是学了,整活又整不来。
基础知识
想入门首先还是基础语法的学习,这是关键。
Python的基础语法包括两大部分,其一是函数式编程部分,其二是面向对象编程部分。
这个阶段的重点:
①掌握Python基础语法,具备基础的编程能力;
②建立起编程思维以及面向对象程序设计思想;
基础语法
计算机组成原理
Python开发环境
Python变量
流程控制语句
高级变量类型
函数应用
文件操作
面向对象编程
异常处理
模块和包
基础模块1基本规则、Python语言特点、计算机语言、如何运行Python、变量赋值五个方面,掌握Python编程的基底知识。
基础模块2模块结构、布局、IO编程流程、标识符、Python对象、内存管理、动态类型六大模块。
两张基础知识导图可以帮助你区域化了解Python的组成部分及基本操作;
高阶语法
学习完基础语法,写写算法题不成问题,但是对应更复杂的环境和需求需要学习一些高阶内容。
网络编程
并发编程
数据库编
正则表达式
Linux系统应用
函数的高级应用
Python语法高阶
此阶段的重点知识:
熟练使用Linux操作系统;
掌握网络编程相关技术,能够实现网络间数据通信;
掌握程序设计开发中多任务实现方式;
熟练掌握MySQL操作相关技术,熟练编写各种数据库操作SQL语句,并能够进行Python与MySQL之间的数据交互;
掌握Python中的re模块的使用,能够实现对字符串进行复杂模式匹配;
掌握Web服务器的工作流程,以及Web框架的实现原理
总的来说,Python的基础语法部分通常还是比较容易掌握的,列表、函数、字符串、流控等内容比较好理解。
面向对象部分对初学者稍难一点,需要一点抽象思维。
想要入门一门语言,还有两个要素是无法回避的,一是学习资料,二是开发工具。
学习资料
学习资料如何选择?
市面上Python的书籍和网络教程一抓一大把,如果你是初学者,建议你务必选择适合0基础小白的课程,学习的痛苦大家都经历过。
还有就是不建议到处收集几个G的学习资源,你能看完那就当我没说。
学习书籍入门书籍:
《Python学习手册》
《HeadFirstPython》
《LearnPythonTheHardWay》
《Python编程:入门到实践》
《笨办法学Python》
《简明Python教程》
进阶书籍:
《PythonCookbook(第三版)》
《流畅的Python》
《Python源码剖析》
《Python进阶》
《Python核心编程》
《Python性能分析与优化》
《Python高级编程》
Web框架:
《Django基础教程》
《轻量级Django》
《PythonWeb开发:测试驱动方法》
《WebDevelopmentwithDjangoCookbook》
爬虫:
《用Python写网络爬虫》
《精通Python爬虫框架Scrapy》
《Python网络数据采集》(WebScrapingwithPython)
《Python爬虫开发与项目实战》
数据分析:
《利用Python进行数据分析》(PythonforDataAnalysis)
《Python数据科学手册》(PythonDataScienceHandbook)
《Python金融大数据分析》
《Python数据处理》
重点不在与选择怎样的教材,而是我们要明白自己学习python出于什么目的,处于哪个阶段,再选择合适的书看,不要盲目去找书看。
开发工具简单说几个,工具选择自己用得顺手的就行;
IDLE
Python安装自带工具,被很多人诟病,但我觉得它安装简单,反而很适合初学者。如果实在不喜欢,可以在学习一段时间后改选其他的工具。
pycharm
专业级神器,缺点是比较笨重,平时写小程序的话一般不用。
sublimetext:轻量级神器
Anaconda
集成了大量数据分析相关库,安装方便,另外它的调试功能据说也比较强大。缺点是界面比较难看,代码补全功能也不完善。
Ipython
又称jupyter,Anaconda自带,我最近才开始使用,能够实时查看代码输出(这一点也很适合初学者)
最后补充一点Python版本选择的问题,其实这个问题真的真的不用纠结,我还是建议选择Python3入手,毕竟Py3是大势所趋。
注重实战
我前面说了,不能盲目看书,看资料教程,要求实。
虽然那样的讲解很全面,但单纯的理论也很枯燥,让人越看越累,越累越不想看。
在这个阶段,一定要多动手实践,始终要相信我们实践是检验真理的唯一标准,查找和处理过程中遇到的错误和异常,遇到问题多上网搜索、找人求教。
虽然过程很难,在成功的解决了这些问题之后,会有一种很大的成就感,这样一个良性循环,才是你学习Python这类程序语言的最大动力。
实操网站GitHub
非常实用的一个网站了,这里找项目训练资源非常不错,数量也很多,也是源码学习、版本控制不可缺少的网站。
python3简明教程
一个综合的教程,划分了很多不同类别的知识模块,比较偏重实战,作为入门也很不错。
提供了开箱即用的实验环境,免去了搭建环境的麻烦。
开源中国
开源中国社区的项目合集,里面还有福利项目。
廖雪峰的官方网站
廖雪峰老师的教程非常经典,可以当做Python的百科全书来参考。
觉得单练项目太枯燥无聊了?这里介绍几个有意思的在线编程练习网站,在玩儿中练习编程。
①python天从新手到大师:非常适合新手练习的项目教程
②py.CheckiO编程挑战练习:游戏闯关模式
③Codingbat:在线编程练习网站
④ThePythonChallenge:项目挑战型编程网站
细化目标
当你决定入门Python时,需要一个清晰且短期内可实现的目标。
比如你想通过学习找一份初级程序员工作,目标明确后,你需要了解企业对初级程序员有哪些技能要求。
下面是我从某招聘网站找的一个初级Python工程师的任职要求:
1、熟悉Python及常用的Web开发框架;
2、至少熟悉一种数据库的使用,如MySQL、mongodb、redis等;
3、熟悉Linux操作系统及常用命令;
4、良好的编码习惯和文档编写习惯;
做Python开发除了熟悉语言本身之外,还需要掌握很多相关联的技能,好比打NBA,你不光要学如何投篮,还要练习力量、技战术等一整套东西。
所以一个普通PythonWeb开发工程师需要掌握的技能包括至少一个Web框架,比如:Django、Flask、Tornado,做业务系统离不开数据库的支撑。
另外,还需要对Linux系统的基本操作和常用命令有所了解,因为以后你写到程序基本上都会运行在Linux平台上。
想做Web开发的话,HTML、JS、CSS是必须有所了解的,作为前端技能,不一定要深入了解,做到能写基本的HTML代码就够了。
此外,还需要了解HTTP协议(推荐《图解HTTP协议》);
目前比较主流的Web框架有Django、Flask、Tornado,各自都有各自的特点,Django文档丰富、Flask短小精悍、Tornado异步并发。
这里推荐使用Flask,推荐书目《FlaskWeb开发:基于Python的Web应用开发实战》
Linux推荐《快乐的Linux命令行》,同样是一本非常经典的入门迷你书,没有太多理论,范围也不太宽。
MySQL只推荐一本《MySQL必知必会》,不到页的小册子,实践性很强,没有什么艰深晦涩的理论堆砌,看完这本书基本入门数据库了
进阶提升
个人python进阶的方法是学完基础知识后,就先从网络编程开始,从一个最简单的socket开始,先写写两台机器如何通讯,找找成就感。
然后接着学习socketserver模块和