搜索
首页后端开发Python教程如何系统地自学一门Python 语言

如何系统地自学一门Python 语言

Dec 02, 2016 am 11:58 AM
python自学

零基础情况下,学一门语言充实下自己,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社区已有的工具型类库,如下图所示:

 2316.jpg

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


°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 等等。在它们的源代码中淘金,也是个不错的选择。

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


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Python:游戏,Guis等Python:游戏,Guis等Apr 13, 2025 am 12:14 AM

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

Python vs.C:申请和用例Python vs.C:申请和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

2小时的Python计划:一种现实的方法2小时的Python计划:一种现实的方法Apr 11, 2025 am 12:04 AM

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python:探索其主要应用程序Python:探索其主要应用程序Apr 10, 2025 am 09:41 AM

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

您可以在2小时内学到多少python?您可以在2小时内学到多少python?Apr 09, 2025 pm 04:33 PM

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础?如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础?Apr 02, 2025 am 07:18 AM

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到?如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python 3.6加载Pickle文件报错"__builtin__"模块未找到怎么办?Python 3.6加载Pickle文件报错"__builtin__"模块未找到怎么办?Apr 02, 2025 am 07:12 AM

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。