零基础情况下,学一门语言充实下自己,Python,简洁、优美、容易使用,是一个很好的选择。那么如何系统地自学Python呢?

有的人非常想学好Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?

幸运的是,Python是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。

Python的设计哲学之一就是简单易学,体现在两个方面:

语法简洁明了:相对Ruby和Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。

切入点很多:Python可以让你可以做很多事情,科学计算和数据分析、爬虫、Web网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。

废话不多说,学会一门语言的捷径只有一个:Getting Started

1、起步阶段

任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。

1、硬知识

“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个Java程序员去学习Python,他可以很快的将Java中的学到的面向对象的知识map到Python中来,因此能够快速掌握Python中面向对象的特性。

如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。

下面列出了一些适合初学者入门的教学材料:

❖「笨方法学Python」:http://learnpythonthehardway.org/book/

这本书在讲解Python的语法成分时,还附带大量可实践的例子,非常适合快速起步。

❖「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!

这本指南着重于Python的最佳实践,不管你是Python专家还是新手,都能获得极大的帮助。

❖「Python官方文档」:Our Documentation

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

❖ 辅助工具:Python Tutor

一个Python对象可视化的项目,用图形辅助你理解Python中的各种概念。

Python的哲学:

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

学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。

必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用Python中的对象模型有着很大的帮助。

2、软知识

“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。

对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择Python版本时徘徊不决,一会儿看2.7一会儿又转到3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。

很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。

还不如告诉初学者,学习本来就是个需要你去走弯路出Bug,只能脚踏实地,没有奇迹只有狗屎的过程。

选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。

自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用Promise...

更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。

技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和HTML5的火热,某些方面不正在重演过去PC的那些历史么?

因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。

起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。

2、发展阶段

完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。

没错,你的怀疑是非常正确的。要让Python发挥出它的价值,当然不能停留在语法层面。

发展阶段的核心任务,就是“跳出Python,拥抱世界”。

在你面前会有多个分支:科学计算和数据分析、爬虫、Web网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道Python语法就能解决的问题。

拿爬虫举例,如果你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连BFS都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。

在这个阶段,不可避免要接触大量类库,阅读大量书籍的。

°1类库方面

「Awesome Python项目」:vinta/awesome-python · GitHub

这里列出了你在尝试解决各种实际问题时,Python社区已有的工具型类库,如下图所示:

你可以按照实际需求,寻找你需要的类库。

至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。

°2书籍方面

这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:

科学和数据分析:

❖「集体智慧编程」:集体智慧编程

❖「数学之美」:数学之美

❖「统计学习方法」:统计学习方法

❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning

❖「数据科学实战」:数据科学实战

❖「数据检索导论」:信息检索导论

爬虫:

❖「HTTP 权威指南」:HTTP权威指南

Web 网站:

❖「HTML & CSS 设计与构建网站」:HTML & CSS设计与构建网站

...

列到这里已经不需要继续了。

聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。

事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。

3、 深入阶段

这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。

可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。

这里推荐一本书:

「Python 源码剖析」:Python源码剖析

这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。

另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、Schema 和 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。

这里推荐一门公开课

「编程范式」:斯坦福大学公开课:编程范式

讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。

值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。

Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。

¶ 最后的话

每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python是一门面向_如何系统地自学一门Python 语言相关推荐

  1. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

  2. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  3. 计算机导论python知识点_如何系统地自学 Python?

    我是自学的Python.从对Python一无所知,到在博客上写Python相关的系列文章(Python快速教程),前后有将近三年的时间.期间有不少门槛,但也充满乐趣.乐趣是自学的最大动力.Python ...

  4. 如何系统地自学python100天_如何系统地自学 Python?

    第一 学习方向:python应用方向很多,必须明确学习方向想全栈开发:就是web应用开发,是用来写网站后台的 数据分析:就是做大数据分析的,数据量级起码是千万级别的,做的是大数据分析 网络爬虫:其实属 ...

  5. python学哪些东西_想要自学Python ,需要准备什么东西?

    学习Python这门技术,你需要保持一颗敬畏的心态去学习,认真对待写下的每一行代码,甚至每一个字符.想要学习Python拿高薪,你要学习满足企业需要的技术,比如Python基础.Linux.Web全栈 ...

  6. python自学到大牛_如何才能自学成为 Python 大牛?

    点击蓝字"python教程"关注我们,一起学习成长哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python ...

  7. 人生苦短我用python谁说的_人生苦短,我用 Python

    我接触 Python 并不算早,第一次使用 Python 写生产系统的程序是2004年,那时候我已经有了几年的编程经验.当然了,现在这年头说早晚都不合适,昨天我说2000年就开始使用 Vim 编程了, ...

  8. python抽奖概率设计_辞职转行不如学Python,那些下载安装的坑,你真的都避开了嘛?...

    现在的职场竞争越来越激烈,不学上一两门新技能,保持自己知识更新,很容易被年轻后辈超越.有些人选择学一门外语,有些人选择学习职场上为人处事的能力. 有人选择Python. 因为,就业市场需要Python ...

  9. python数据科学入门_干货!小白入门Python数据科学全教程

    前言本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工 ...

最新文章

  1. python3 collections模块_Python3之内建模块collections
  2. java继承----类的复用
  3. 恢复Win10系统默认内置应用
  4. Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架
  5. NA-NP-IE系列实验18:ip default-network
  6. ObjectInputStream和ObejctOutputStream
  7. javascript 西瓜一期 05-08 计算机的基本组成
  8. 3.10 触发字检测
  9. 关于ISA2006引起网速慢或间歇性断网的问题的解决方法
  10. AcWing 4243. 传递信息(单源最短路)
  11. 专业Excel组件Spire.XLS 教程:在Excel中合并单元格
  12. 微型计算机音乐发生器,基于51单片机的音乐发生器的设计最终版(全文完整版)...
  13. 实验一 9V稳压电源电路实验
  14. HTTP Live Streaming直播
  15. Android 在一个APP里打开另一个APP
  16. win10 android叹号,win10系统设备管理器驱动显示黄色感叹号的详细技巧
  17. 面试官:什么是 Reactor 和 Proactor?
  18. 计算机防火墙有用吗,win7自带防火墙有用吗
  19. 百度站长俱乐部SEO提问收集-3
  20. 银河麒麟批量压缩图片的方法

热门文章

  1. 利用 Ksweb 将手机变为服务器 | 教程
  2. html的编程语言 背景色,易语言编程界面背景颜色以及文字颜色 [大牛莫笑]
  3. 前端验证码倒计时、后台发送验证码、创蓝短信接口
  4. 开源协议的比较(详细)
  5. PM如何使用产品六要素方法论——以gavin学产品公众号为例
  6. linux修改数据库内容命令,linux中的数据库命令
  7. 51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)
  8. 麦克风办理FCC认证
  9. Winfrom ListView 导出Ecel
  10. 2021-01-19(学堂云)文献管理与信息分析期末考卷