这次重新学编程,我一方面用自己买来的书《Python编程:从入门到实践》,另一方面就是一直在参考Python官网发的那个教程文档,The Python Tutorial。不得不说,人家Python发明人自己写的官方教程确实有高明之处,这主要体现在它安排内容的顺序和很多编程书里面都不一样。它最初当然是说Python的环境,随后正式部分一开始就只讲三种基本的数据类型——数(numbers),字符串(strings),列表(lists)。这个所谓的讲,指的就是:一,简述这种数据类型是什么;二,你可以对它做什么小小的操作,比如字符串改一改大小写,数可以有各种运算符,列表可以增减元素。而且,这个教程一开始都没有讲太复杂,比如讲数,就是把Python当个计算器使用;比如讲字符串,对于字符串要用的.upper()/.lower()这些函数就先不讲。当然,这个过程中不可避免地讲到变量这个概念,使用print()函数,不过也就是作为一个呈现结果的工具而已。说完这些,接下来人家并不继续讲更多的函数,甚至没讲input(),就开始讲for循环和if判断了。
从for循环、if-elif-else判断、while循环,到break、continue这些,都属于流程控制。在流程控制的时候,把这部分内容与前面的列表结合起来,告诉你怎么用流程控制去遍历列表内容、批量修改列表内容等等。
这些都讲完,它就开始告诉你可以怎样去自己写一个函数。
如果说你在读官方文档开头部分时。会觉得比起其他编程书它省略了一些内容没讲,那么在这里,你又会惊讶于它把函数放到这么靠前的位置提前讲。甚至还有几种数据类型没有提,还没有让你见过多少个函数,他就会告诉你怎样用def自己定义一个函数,包括形参、实参、返回值等概念,此处也都一并讲了。
讲完这些,官方文档又返回去,重新加工数据部分。这时它引入了另外三种数据,即元组(tuple)、集合(set)、字典(dictionary)。
接下来就是讲模块,讲输入输出,然后就是讲所谓“面向对象编程”需要的“类”这个概念,介绍如何自己用class:创建一个类,并示范如何用import导入一个创建好了的类。
我读这里的时候颇有醍醐灌顶的感觉,之前写过画图之类的程序,它们总是说要导入一个“库”,而这个“库”究竟是什么东西,我到现在才明白。说到底,它也是一堆模块,模块里面是各种已经被定义好的“类”,而“类”里面放有定义好了的函数;类似的东西,其实我们普通人也可以自己写一个,然后自己去用。
总结一下,它整个顺序就是:有东西——操作东西(仅“顺序”,做一下操作)——循环和分支这两个复杂操作——封装操作为函数——配合输入和输出形成完整程序——告诉你还有更多的东西可以操作——串起一堆程序从而做出复杂的结构。
而在我看来,官方文档这么写,相比于其他教材优势在于它很快就能让你看到最小闭环。
比如一开始你学了数,你就可以用它来算术;你学完仅仅三种数学类型和一些流程控制,你就可以以自己写函数实现自己想要的功能。这样,学习者就能感觉到这东西跟自己有关系,每学一点知识都能用起来。
更重要的是,它让你尽早体会到自己写出一个程序的感觉,这个程序功能少没关系,添加功能是后面的事情,自己先跑一个完整流程更为重要。随后学习更多函数,更多功能时,你知道把它们安置在知识体系的什么位置,是先给你一个框架之后再往里填东西。反之如果一开始没有建立整体观,凌乱地摆出一堆函数在这里,我学完也不知道怎么用起来,结果就是很快就忘。
所以说啊,看官方教程还是一个很好的学习办法。很多之前没想明白的地方,看完这一遍我都理解了;有些原本完全不知道能相互关联起来的东西,现在我也知道了他们之间的联系。即使我后面不往深里学,到目前为止也可以算是接受了一门较为完整的通识课,这十几个小时花得很值。