本文为《爬着学Python》系列第三篇文章。
在真正进行Python基础学习之前,我们再来尝试、熟悉一下Python语句,再次感受一下Python语言的特点。所谓磨刀不误砍柴工,准备做再多都是不为过的。
但是在这里,还有一件事情要做,就是推荐互联网上免费的系统性的Python基础教学资源。
第一个,是网易大学MOOC的Python语言课程(Python语言程序设计_北京理工大学_中国大学MOOC(慕课))。该课程解释比较清晰,但讲得比较浅,也没有突出Python语言的特点,非常适合无编程基础的初学者,但不是很推荐对自身学习能力特别自信的读者。MOOC上其他Python课程也很多,学有余力的可以用来拓宽视野、自主选择感兴趣的方向。
第二个,是廖雪峰的Python课程(Python教程 - 廖雪峰的官方网站)。这个教程的特点在于内容相对全面且检索方便,初学者可以用来当作备忘文档。纯粹当自学材料的话,该教程的质量也还是值得认可的。
第三个,是官方的tutorial(The Python Tutorial — Python 3.6.2 documentation)。这个没太多可说,对于外语能力过硬的学习者来说,官方tutorial永远是最快捷最科学的学习途径。当然,这样的文档大多都有翻译(Python 入门指南 — Python tutorial 3.6.0 documentation),因此外语能力不够也不用急。不过还是推荐看英文原文。
第四个,是慕课网的在线课程(搞定python基础_学习规划_慕课网学习路径),主要包括Python入门和Python进阶。慕课网课程比较丰富,难度跨度比较大,选择面非常广,是在线学习的优秀资源。
最后额外推荐一个我认为不逊色以上任何的学习平台SoloLearn(Python 3 Tutorial | SoloLearn: Learn to code for FREE!),学起来比较轻松。并且移动端全平台都有客户端(Android/IOS/UWP)。
总之,学习途径很多,关键在于"趁早下手"+"持之以恒",以上学习方式推荐程度逐渐递进,学习者可以自主选择,也可以交叉借鉴,但还是推荐专心选一种路径走一遍完整的学习过程。只要尽快完成一遍完整的学习流程,就能对Python有个整体的印象,方便进一步学习。
以上是我对于Python基础学习的建议,我的建议就是别看我的教程,好的教程实在太多:)
但是该完成的工作还是得做。本文也简单介绍一下Python语法特点。
首先关于解释器命令行运行与文件运行两种方式不再赘述了,之前提到过,以后默认都是在IDE或者编辑器中编写.py
文件来完成目的。
赋值
首先是最简单的赋值语句。
a = 3
在别的语言中,变量在使用前需要声明,而Python不需要声明变量。这是因为像在C语言中要显式分配内存给要操作的变量,于是需要根据变量类型来决定给变量的内存大小。之后变量的值直接保存在变量中,这叫作值语义。
在Python中我们的变量可以说是没有类型的,它是一个指向数据对象的标记,这个标记本身占用较小的固定内存,真正占用内存的是变量所指向的数据对象具体的大小,这叫做引用语义。为了方便区分,我们根据变量指向的值类型来确定变量的类型。
简单来说,值语义中变量就像是规定好大小不同的盒子,再把数据装进盒子里;引用语义就像是把所有数据存在银行,变量就是你的账号和密码。更多的解释可以参考我的另一篇文章(Python精进-装饰器与函数对象)。
真正在打基础的同学对以上概念有个大概的了解即可,在以后的学习中会更逐渐体会到Python的这种特点。
在执行这条语句之后,Python大概做了这些事情:创建了一个数字对象3,声明了一个变量a,将变量a指向数字对象3。从此以后我们访问a时,就会定向到a的对象3。
如果我们在文件中只输入这一行,执行这个文件确"什么都没有发生",这是因为我们缺少一个输出语句。
输出
输出语句很重要。计算机最开始就像是现在的计算器,我们输入数据是为了计算结果,如果计算结果不输出,我们就达不到目的。
print(a)
在这时候我们就接触到一个新概念,叫作函数。
我们通过print
函数来实现输出,这是它的函数名,调用时我们需要在它后面加上括号,有必要时我们还需要加入变量作为参数,该例中a就是参数(print函数对于参数有要求,要求这个对象具有__str__方法,以后会在类的教程中涉及)。
之所以调用函数要加括号,是为了和变量本身区分开来。我们在上面的赋值中讲到,Python不用定义变量,变量是个标记。在Python中,不仅仅操作的变量是对象,函数也是对象(Python精进-装饰器与函数对象)。
如果我们做这样的事情:
print = 3
我们对print
赋值,那么从此以后我们再也用不了那个用来输出的函数了。print
变成了一个整数。我们再执行print(a)
就会出错。因此,我们要注意不能对可能用到的内置函数进行轻易地赋值。Python3中相比于Python2增加了一些内置函数,也简化了大量的内置函数。
总结
是的,就这么多。关于数据类型、控制结构,都会在后续的Python基础文章中介绍。初步设计的内容主要是面向过程编程相关内容。因为我觉得面向过程是Python最直接的体现。函数的复杂操作会在函数式编程中作为基础内容介绍。更多的类相关内容会放在比较靠后的部分,因为这方面的知识比较复杂,而且我觉得Python并没有必要采取面向对象编程。当然,面向对象依然是Python编程中几乎最常用的方法,这是我们不得不学它的原因。