如何自学 Python
其实python非常适合初学者入门。相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易。自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,可以更快地写出东西。配置开发环境也不是很复杂,mac和linux都内置了python。另外据我所知,不少学校也开始使用python来教授程序设计课程(比如本人的母校)。
我就是完全通过网上资源自学python的。
从在校时候用python接活赚零花钱,到在创业公司用python开发商业网站和游戏后台。所有遇到的问题,几乎都可以从互联网上的公开资源找到答案。
关于自学python,个人最大的3点经验:
找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》,不过这本书不是非常适合零基础初学者。
去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。
最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。
然而,别人的经验未必能完全复制。比如我没有说的是,在自学python之前,我已在学校系统学习过其他的编程语言。
对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:
从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了
缺少计算机基础知识,被一些教程略过的“常识性”问题卡住
遇到问题不知道怎么寻找解决方案
看懂语法之后不知道拿来做什么,学完一阵子就又忘了
缺少数据结构、设计模式等编程基础知识,只能写出小的程序片段
所以除了前面说的3点经验,给初学编程者的额外建议:
首先要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。
选择合适的教程。有些书很经典,但未必适合你,可能你写了上万行代码之后再看它会比较好。
写代码,然后写更多的代码。光看教程,编不出程序。从书上的例程开始写,再写小程序片段,然后写完整的项目。
除了学习编程语言,也兼顾补一点计算机基础,和英语。
不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别人的代码。
学会查官方文档,用好搜索引擎和开发者社区。
想自学python,要如何学起呢?
python学习的基本步骤如下:
python基础,了解python的数据类型
python爬虫,了解网页结构,了解python爬虫知识,了解数据库知识
python数据分析,了解数据分析库
python机器学习,了解建模知识
这是学习python的基本学习框架,都是和数据在打关系,从收集数据,整理数据,到数据建模。作为一个刚入门的Python学习者,也许对这些概念性的东西不是很理解,但当你真正入门了Python,你将完全理解上面说的概念性的知识。
编程是需要写才能会的,学习编程要选对教程,教程不对,内容不专业;学习方式不对,学习不高效。
零基础自学最容易出现问题的就是碎片化学习。碎片化学习就是指,在不知道整体知识框架的情况下,凭感觉学习,东一榔头西一棒槌,最后自己会哪里不会哪里也搞不清楚。
因此,在学习技术之前,希望大家都能先了解一下零基础学习的路线,高效学习、少走弯路。
如何系统地自学 Python
是否非常想学好Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?幸运的是,Python是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。Python的设计哲学之一就是简单易学,体现在两个方面:语法简洁明了:相对Ruby和Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。切入点很多:Python可以让你可以做很多事情,科学计算和数据分析、爬虫、Web网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。废话不多说,学会一门语言的捷径只有一个:GettingStarted¶起步阶段任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。°1硬知识“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个Java程序员去学习Python,他可以很快的将Java中的学到的面向对象的知识map到Python中来,因此能够快速掌握Python中面向对象的特性。如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。下面列出了一些适合初学者入门的教学材料:❖「笨方法学Python」:awesome-python·GitHub这里列出了你在尝试解决各种实际问题时,Python社区已有的工具型类库,如下图所示:你可以按照实际需求,寻找你需要的类库。至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。°2书籍方面:这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:科学和数据分析:❖「集体智慧编程」:集体智慧编程(豆瓣)❖「数学之美」:数学之美(豆瓣)❖「统计学习方法」:统计学习方法(豆瓣)❖「PatternRecognitionAndMachineLearning」:PatternRecognitionAndMachineLearning(豆瓣)❖「数据科学实战」:数据科学实战(豆瓣)❖「数据检索导论」:信息检索导论(豆瓣)爬虫:❖「HTTP权威指南」:HTTP权威指南(豆瓣)Web网站:❖「HTMLCSS设计与构建网站」:HTMLCSS设计与构建网站(豆瓣)列到这里已经不需要继续了。聪明的你一定会发现上面的大部分书籍,并不是讲Python的书,而的是专业知识。事实上,这里所谓“跳出Python,拥抱世界”,其实是发现Python和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,的取决于自己的专业知识。¶深入阶段这个阶段的你,对Python几乎了如指掌,那么你一定知道Python是用C语言实现的。可是Python对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开Python的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。这里推荐一本书:「Python源码剖析」:Python源码剖析(豆瓣)这本书把Python源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对C语言内存模型和指针有着很好的理解。另外,Python本身是一门杂糅多种范式的动态语言,也就是说,相对于C的过程式、Haskell等的函数式、Java基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在Python中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到Python语言的根源。这里推荐一门公开课「编程范式」:斯坦福大学公开课:编程范式讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读Python源码也有大有帮助。Python的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如Django、Tornado等等。在它们的源代码中淘金,也是个不错的选择。¶最后的话每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。希望想学Python想学编程的同学,不要犹豫了,看完这篇文章,Justgettingstarted~
python如何自学
python学习的基本步骤如下:
python基础,了解python的数据类型
python爬虫,了解网页结构,了解python爬虫知识,了解数据库知识
python数据分析,了解数据分析库
python机器学习,了解建模知识
这是学习python的基本学习框架,都是和数据在打关系,从收集数据,整理数据,到数据建模。作为一个刚入门的Python学习者,也许对这些概念性的东西不是很理解,但当你真正入门了Python,你将完全理解上面说的概念性的知识。
编程是需要写才能会的,学习编程要选对教程,教程不对,内容不专业;学习方式不对,学习不高效。
零基础自学最容易出现问题的就是碎片化学习。碎片化学习就是指,在不知道整体知识框架的情况下,凭感觉学习,东一榔头西一棒槌,最后自己会哪里不会哪里也搞不清楚。
因此,在学习技术之前,希望大家都能先了解一下零基础学习的路线,高效学习、少走弯路。
如何自学 python
建议先去http://www.runoob.com/python/python-intro.html学习python的基础教程,编排得不错,比较容易理解。之后再看你想用python做什么方面(比如爬虫,语义分析,数据挖掘等等),在针对性的学习,可以在网上找教学视频,或者电子书籍。等到真正用python做具体应用的时候,遇到不懂得多看看技术博客,帮助较大。