温顾而知新,可以为师矣。
温顾知新,可以为师。当然,我们的目标不是为师。
时常复习一下自己学习到的东西,是一种不错的习惯。就像牛的反刍,复习是对已有知识的梳理,这个过程既轻松,又能更好的巩固我们的所学,而且时常还可以关注到自己之前因匆忙而遗漏的东西。
当然,这篇文章草草看一下也是可以的,有很多东西是不需要一次掌握的。
当我们都意识不到有这么一个概念时,实际上已经掌握个七八分了,只需要再稍微整理一下思路,就可以轻松掌握了。这就是所谓的质变吧?
术语
我们首先得说说“术语”这个词。
“术语”听起来给人的第一印象是吓人,又是什么神奇的正常人看不懂的东西?
为什么会有术语这种神奇的东西呢?
人类的语言是很重要的,从诞生以来,它大大提高了人们沟通的效率。但是随着语言的发展,同一个词都衍生出了多种意思,而在使用不当的情况下,语言恰恰又阻碍了人们的沟通。
怎么来避免这种一词多义的情况呢,于是人们发明出了术语这么个东西。术语的特点在于,在某种特定的领域或上下文中,同一个术语是精确的,它会被多方理解成同一种意思,这样人们就达成了共识。
说白了,术语就是为了使大家沟通的过程尽可能少的产生歧义。
为了达到这种目的,术语就不得不避开我们平日经常会用到的词。这就导致术语看起来稀奇古怪,对我们不那么友好。实际上,它是为了精确的沟通而作了妥协,我们要体谅。
字符串
1 | print "hello, I'm a string" |
我们之前说,print
可以显示“一句话”。实际上,“一句话”是非常不准确的,因为一句话有可能是我们听到的一段录音,也有可能是文章中的文字。我们可以找个更明确的词。
在计算机中,一个字母a
叫做一个字符。顾名思义,就是一个符号,它代表一个字母。就像我们的羊肉串是把很多羊肉串起来,我们之前所说的“一句话”是由一个或多个字符组成的,故叫做字符串。
“a”是字符串,”abc”也是字符串。
变量
1 | s = "hello, I'm a string" |
根据我们之前的解释,s类似于一个箱子,它可以把我们的字符串”hello, I’m a string”放进去,在使用的时候(如print s)再从里面取出来,这样就达到了类似箱子一样的暂存功能。
这里的箱子只是一种类比,在语言中有一个术语,叫做“变量”,这个术语听起来怪怪的,不那么直观。它实际上是从数学里借来的概念(说借并不合适,计算机本就是数学的一个分支),意思是没有固定的值,可以改变的数。到计算机里,它也可能是字符串或其它类型的东西。
这里的“变”很好理解,一个箱子可以放衣服,也可以放鞋袜。
当然,有变量就会有常量。比如我们的文具盒只能放铅笔像皮,放不下衣物。python是一门简洁的语言,在语法上是没有定义常量的,所以我们可以不需要纠结“常量”的概念,在这里提到是为了帮助我们理解“变量”这个概念。
功能
我们说洗衣机把洗衣服的很多步骤打包封装起来,只留给我们一个按钮开关。“洗衣机有洗衣服的功能”,虽然听起来有点白痴,但它确实是个事实。
功能的概念是很好好理解的。它比较接近我们的生活。
在计算机中也有一个概念,叫做“函数”,它是比功能更准确的一种描述。这也是一个从数学中借用过来的概念,它并非我们日常生活中提到的功能,而就是单指语言中所提供的对步骤的封装。
类
类是使用了生物学中的概念。
生物学中对生物有“界门纲目科属种”的不同精细程度的分类,如豹是猫科,豹属,再细分下来是豹种。计算机语言相对于生物学分类,它只有类的概念,但它提供了继承,即豹可以继承自动物,所以在计算机语言中同样可以提供如生物学分类中那样复杂的从属关系。
类中有类似变量和函数的概念,习惯上被称为属性和方法,以区分我们上面谈到的变量和函数。
实际上,类在计算机里并不是必要的。在一些古老的计算机语言里,甚至都不存在类这个概念。
使用类来抽象现实世界的编程方式,又叫做面向对象编程。而不使用类,仅使用函数和变量的编程方式,叫做面向过程编程。前者更接近人类的思考模式,但需要我们掌握更多的概念。
库
我们之前在操作表格文件时,用到过一个openpyxl包。它是一些类和函数文件的集合。
为了更精确地描述,我们有时会把包称作“库”。我们通常会把从网上找到的库叫做第三方库。
那哪些是第一方库和第二方库呢?有点意思,哈哈。
我们同样可以把单个文件作为类和函数等的集合。通常我们会把单文件的包叫做模块,比如之前的示例:
1 | import os |
为了演示方便,我们使用了一个随python语言打包的模块,叫做os
。它实际上就是一个模块。
碎碎念
想要装一个完美的x,熟悉并掌握这些概念是必须的。
不过不必急于求成,就算我们不掌握这些概念,对我们的学习也没有太大影响。
有很多优秀的东西,我们是可以潜移默化地吸收的。可能突然有一天,我们回头时猛然发现,以前不明不白的概念,竟然已经被我们彻底理解了。
在那之前,我们可以继续愉快地叨叨。