看到知乎的高分推荐,总是让我很发愁。为什么说的都很片面,但看起来又很好呢?从170段长篇大论中摘取有效的信息,简直是费死劲的工作。
我想试试从回答中摘取我很赞同的内容,同时保持内容的简洁。
————来源:知乎。作者:TheAnswer——————
由浅入深,建议按照先后顺序阅读学习。
0.Python简明教程
1.Python 开发教程
—————
评价:精简则无过,杂则乱。Python入门一本书加上网上的简明教程足矣。
书籍选O`Reilly的精品书籍即可,入门的别太厚的。
————————————————————————
————来源:知乎。作者:昔九——————
我推荐一个叫codecademy的网站。它很适合零基础且学一点就想要得到鼓励的朋友。
————
评价:在线做题是一种极其有游戏感的学习方法,一旦做出几道题以后,那种成就感和快感会让你欲罢不能。本人再推荐一个网站,需要科学上网访问:
——————————————————————
Python不仅是用来做网站,也不仅是用来做工具的,也不仅能用来开发游戏服务器,也不仅能用来开发游戏客户端。
Python的学习方法,以上两段,足矣。
各位答主别总想着自己上墙,避免知识泛滥也是我们的责任嘛。(顺便拉黑阿里巴巴云栖社区的回答)
这个问题下面这么多人推荐了这么多 Python 资源,估计零基础新手看到了会眼花缭乱吧。
作为非计算机专业出身、自学编程的过来人,我知道想找到一份适合自己的入门教程不容易。不如就在这里分享一下,如何鉴别一份 Python 教程是否适合新手。
在2020年,Python 核心团队就会停止支持 Python 2 了。目前不少主流库的新版本也停止支持了 Python 2 ,包括 Django、Flask、Numpy 等等。
如果你是现在开始学 Python,当然要选 Python 3 了!这听起来简直像是废话。
然而,在知乎上被热捧的 Learn Python the hard way 的作者 Zed.A.Shaw 就是 Python 2 的顽固分子。你在京东上能看到的《笨办法学Python第3版》就是基于 Python 2 写的。
想要分辨 Python 2 还是 Python 3 很容易,你看 print 的写法就知道了。
所以,如果你执意要选择这份教程上手,那肯定选了是一条难走的路啊,这可不是 the hard way 么。在别人开始学语法的时候,你需要折腾各种兼容问题,比如教程里的代码没法在你电脑上正常运行,比如报错了无法获得帮助。有多少人是在这个坑放弃学习 Python 的,举个手呗
还有啊,另一个在知乎上被热捧的 code cademy , 也是用的 Python 2,并且丝毫没有要更新的意思。也许这家2011年创立的公司,已经落后于这个时代了吧,可惜了。
所有教程都会标榜自己适合零基础,但是不是真的适合零基础,要看有没有把概念解释清楚。
无论教程的形式是直播、录播、博客、论坛还是书籍,能把概念讲清楚才是最重要的,这才让新手有了学明白的可能。
对于零基础新手来说,什么是「变量」、什么又是「函数」,这些编程常识新手是没有接触过的,但是很多大牛根本不屑于去讲清楚这些,因为他们学编程学了太久了,这些常识就像「早上要刷牙」一样已经根深蒂固了。
这么说可能你还不信,那可是知乎上千万人都点赞的教程啊,怎么可能讲不清楚概念?那我们就来扒一扒,各个教程是怎么讲「变量」这个概念的。
R 教程:变量是存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。
小白心声:哈哈哈,啥玩意?内存我知道,什么是在内存中开辟空间?我需要关心这个么?
这就是典型的用一个抽象概念解释另一个抽象概念,如果你看的是这样的教程,看的越多,就发现自己不明白的概念越多。
V 教程:Python 的变量不需要声明,你可以直接输入:>>>a = 10。 那么你的内存里就有了一个变量a, 它的值是10
小白心声:变量这一节上来第一句话就是「变量不需要声明」,我是不是错过什么了?声明是什么?不需要声明意味着什么?如果需要声明是什么样子的?
这让我想起我家猫有次得猫藓,京冠医院院长给开了瓶药,第一句就说「这个药可以舔。」当时我是懵逼的,难道这个药是口服的?后来才知道,这个药是用来涂抹的,但一般用来涂抹的药都是猫不能舔的,京冠独家研发出来了这种猫舔了也没关系的药,很安全,所以院长十分骄傲的先介绍这个特性。但不了解这些背景,当然就不明白他为什么那么说。
这是不是和 V 教程上来就说「变量不需要声明」很像?
L 教程:变量的概念基本上和初中代数的方程变量是一致的, 只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
小白心声:初中代数我学过,x+1=2 嘛,所以变量就是那个 x,是未知数的意思喽?好嘞,那我接着往下学。诶,这有个 x = x + 1 是啥意思?x 是未知数的话,两边一消掉变成了 0 = 1 ??? 这个在数学上不成立啊?难道我初中数学没学好……
这个例子说明了,不恰当的类比会给零基础新手带来错误的印象,以为自己理解了,其实还是没理解。
不是故意找反例,这些都是找的知乎上热捧的知名 Python 教程节选的。为了避免得罪人,这里就不说这些教程分别是谁的了,再说下去估计要有人找我问多少钱能删帖了。你也可以看看你手里的教程是怎么解释变量这个概念的,看看较真起来的话你真能看懂么。
不是自卖自夸,我找了一圈真没找到一个能讲明白的,所以在这里只能拿我写的教程来举个例子,大家来对比下了。
可能我是第一个提出这个说法的,变量的作用就是用来给数据起名字的。为什么要给数据起名字?在这一页之前你会做20个交互练习,做完你就发现那些数据就消失了,没办法再次使用了。
想要下次能方便的使用数据,就需要给这个数据起名字,也就是变量赋值。
我自己是新手自学过来的,所以我知道用概念解释概念有多讨厌。我的思路就是先让你置身于使用情景,然后你就自然明白为什么了。
这块可能说的有点多了,我想说的是,找一份能把概念解释清楚的教程上手去学吧。也不是说非得是我的教程,哪个你能看懂,你就学哪个。
记住,你看不懂,不是你的错,一定是教程的问题。看不懂赶紧换。
最后这点不知道会不会有争议。先确认一个事情,你学 Python 是为了拿来用的对吧?你不是为了研究编程语言进化史的吧?
如果这点有共识,那么你学每一个新语法的时候,就会很自然的想到:我学的这个东西能用在哪呢?怎么用呢?
那么你可以去看下,你手中的教程有没有回答你的这个问题。
这里只举一个典型例子,L 教程条件判断那一节:
age = 3 if age >= 18: print('adult') elif age >= 6: print('teenager') else: print('kid')
这个程序是为了判断 age = 3 是属于成年人、青少年还是儿童。我有个傻问题啊,既然已经知道了 age = 3 ,干嘛还去判断呢?
其实大多数基础教程都有这个通病,例子是伪代码,大多数都是1+1,abc 这种例子,没什么实际意义。这也就是为什么你看完基础教程,却不知道怎么去用。没学过使用场景嘛,怎么可能自己想到。
那么多教程,却很少有人能点破这个事情,为什么要用条件判断?因为有些事情的发生是未知的啊。之所以要用条件判断,是为了预测程序可能发生的不同情况,再针对每种情况制定对应的解决方案。
所以,如果把上面那个例子中的 age = 3 改成 age = input(),这就说得通了。来自用户的输入是未知的,所以我才要分门别类的判断。这才是条件判断在实际使用中的用法。
当然,这里只是举个例子,并不是说改一下这个例子就变成好的使用场景了。一个好例子和一个坏例子从根本思路上就是不同的。
别人怎么写例子的我不知道,我自己在写例子的时候,看了大量源码,总结出来核心的几个使用场景。
比如说,条件判断这块,我总结了3个使用场景:值比较、看结果、猜有无。可以说,只要用到条件判断,就逃不出这3个场景了。
这里又不小心说多了,总之,找一份有使用场景的教程,你看完就知道学的东西在哪用了。
还是那句话,你学完不知道怎么用,不是你的错,一定是教程的问题,赶紧换。
总结一下,判断一份 Python 入门教程适不适合新手的3个核心要素:
这3点都满足了,才是好教程。
其他一些你以为重要的,其实不重要。
是不是写教程的人资历越牛逼,就越好啊?
真不一定,专家不一定是能体恤初学者的好老师,你要是找 Python 之父 Guido van Rossum 教你,他可能就从 Python 的垃圾回收处理机制讲起了。
是不是教程写的越长就越系统啊?
砖头厚的教程你看的完么?最重要的尽快练起来啊,在使用场景中理解基础知识。
可能有人会喷,别人都觉得这些教程挺好的,就你事多说看不懂,是不是没事找茬啊?是不是就为了推自己的教程啊?真不是。
在所有学科中,数学、英语,编程等等,就编程的教学年头最短。在教学上传承的越远的学科,在教学环节上就打磨得越好,可以让任何一个普通人学懂。
而编程是一个很年轻的学科,它还没有经历过一种可以被传承的教学模式,没有形成一个可以让任何人都能学会的教学方法。
所以说我做的事情,就是让编程的教学方法更成熟,让任何人都能学会编程。
也许我看起来像这个行业的搅局者,但实际上,即使我不出来也会有人做这个事情,因为编程这个学科会越变得越来越流行,也越来越成熟。
一定会的。
你还在低效努力吗?
用 Python 提升效率,4 小时工作 20 秒完成
《Python 效率 Up 计划》新课发布会,点击免费参加
零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有很多的学校使用python作为入门编程语言。此外,python在机器学习,人工智能领域也非常流行,算得上是算法工程师的标配编程语言。
下面的内容由浅入深,建议按照先后顺序阅读学习。如果你觉得内容不错,希望别做松鼠党,收藏了就不了了之,坚持读完,有条件的最好是购买书籍阅读效果更好。本文分享的内容和文末推荐的书籍均出自vamei君。
到现在为止,Python学习已经可以告一段落。下面的部分,我想讨论Python的高级语法和底层实现。这一部分的内容并不是使用Python所必须的。但如果你想从事一些大型的Python开发(比如制作Python工具、写一个框架等),你会希望对这一部分内容有所的了解。
Python深入01 特殊方法与多范式
Python标准库的重要性在于:
Python标准库02 时间与日期 (time, datetime包)
Python标准库03 路径与文件 (os.path包, glob包)
Python标准库04 文件管理 (部分os包,shutil包)
Python标准库05 存储对象 (pickle包,cPickle包)
Python标准库08 多线程与同步 (threading包)
Python标准库10 多进程初步 (multiprocessing包)
Python标准库11 多进程探索 (multiprocessing包)
Python标准库12 数学与随机数 (math包,random包)
最后推荐两本Python书籍:
聪明人靠统计数字和洞察来得出结论。
平庸的人仅依靠统计数字来获取信息。
笨蛋成天看个案小作文来悲鸣或自嗨。