第一部分是以一个博弈论作为开篇,我们不求甚解地去读简单的代码,掌握基础的代码技术也可以增加对世界的理解。
第二部分是一些基础知识的介绍,包括工具与使用方法、DNS 与 Python 基础知识;内容量来看,这部分占了整体的绝大部分,但无需写一行代码。
第三部分开始上手写代码,直接完成一个 DNS 服务器,这个过程需要反复、零散地跳回第二部分,从而真正地掌握 Python 的基础语法。
为了夯实 Python 的入门,有了最后一部分《技》,都是一些实际的例子、思路、代码。
一般的 Python 入门课程,大抵有两种设计思路:
上面这两种思路,都有可取的地方,但如果我自己再从头重新学习 Python 的话,两者都不适合于。而这样的 『我』并不是一个人,我们需要新的课程设计思路。
本课程,从内容划分,应该也能粗窥基本的设计思路。我们在这个课程中,并不是单纯地 Learn Python
,而是 Learn How to Learn Python
。
其实,还有另外一种教学思路,就是把门槛降低。这是很好的想法,表现形式可能是视频课程、交互式的递进引导。
我们的课程不会如此处理,绝然不会有视频的课程。在 《FirstWeb Pro》 中,或许你已经接触了 复杂度守恒
的想法,如果在自学的领域,可能也有类似的 难度守恒
。如果把 入门 当做一个完整的产品,那么在 1% 的进度时做到 低门槛
是非常棒的,但是,如果到 100% 的进度了,仍然维持着低门槛的状态,那就糟糕了。
终归,理解技能和习得技能,还是有区别的。
整个课程的内容浏览过一遍,那对于 Python 的基本概念是会建立的,但要真正上手仍然需要写代码、写代码。具体上手且熟练到什么程度,可以自己决定;到达终点的地图都在这里,想一往无前还是走走停停,都没有关系,起码不会迷路了。
之所以强调不会有视频课程,并非否定它存在的价值。如果要实现的 大体理解
,视频的效率远高于文本,它的接收相对被动,阅读
的主动性更高,自然会枯燥很多。而对于『技能的掌握』而言,视频形式则是低效太低了。
课程中出现的 Python 源代码,有两种表现形式:
print('hello world')
>>> print('hello world') # 我是代码
hello world # 我是信息输出
>>>
自带运行结果的代码中:以 >>>
开头的,表示代码,不以 >>>
开头的,则表示运行过程中的信息输出。这个时候,也不要直接复制代码去执行,由于 Python 交互环境对缩进的一些特殊要求,自带结果的代码
未必能全部运行,大概率会在『缩进 (indent)』 上出现问题。
另外,如果没有 LearnPython.app 的 License,完整的源代码需要自己从课程文档中提取,那么有些 module 的 import,自己整合代码的时候需要特别注意,比如出现 requests.get
那说明应该有 import requests
,同理,如果出现 codecs.escape_decode
那说明需要 import codecs
。