「使你陷入麻烦的,不是你不知道的,而是你以为知道,但其实不是这么一回事的事情。」 -马克‧吐温
当你以为Python中的=,跟你以前在学校上数学课时的 =一样时,你等同于在自己学Python 的路上放上了一个大大的绊脚石。
Python 的观念(concept)是你对这个程式语言的认知与看法,对于没有学过程式语言的人来说,Python 就像是一堆数学符号跟英文字母乱码,套用自己既有的认知来看待这些符号与字母们。
当你开始学Python ,你会发现有些符号跟数学中的用法一样,像是加、减、乘、除,都跟在数学中有一样的功能。
<span style="color:#3a3a3a"><span style="background-color:#ffffff"><span style="background-color:#eeeeee"><code>+ 加
- 減
* 乘
/ 除</code></span></span></span>
但你要留心,=在Python 世界中有不一样的功能!
Python观念:=是赋值,不是等于
刚开始学Python ,最容易混淆的就是=这个符号。Python 世界的 =符号, 与数学世界的=有完全不同的含义。
就好像同样是点头,在台湾代表「好」,但在印度却是表达「不好」,看起来一样的动作,却有不同的意思。
学习Python的路途上,如果你不打算改变对=的既有观念,那么你的Python会学得很混乱。
Python 中的= 符号,代表赋值,是将某一个值指派给你所设定的变数(variable),阅读时你需要从右读到左。
我们用下面这个例子再详细说明= 这个符号 :
<span style="color:#3a3a3a"><span style="background-color:#ffffff"><span style="background-color:#eeeeee"><code>>>> x = 1
說明:將1指派給 x, x 就是此處設定的變數。
>>> y = x + 2
說明:將 x + 2 指派給 y ,y 是設定的變數。
>>> y
說明:在互動式解譯器中會直接印出 y 的值。
3
說明:輸出 y 的值等於3。
</code></span></span></span>
知道= 在Python 中代表赋值后,你会不会有疑问:假如需要表示「等于」,该用什么符号呢?
Python 中的等于以= =来表示,不等于以! =表示。
因为=代表的是赋值,如此一来,下方这个程式码的逻辑就通了。
<span style="color:#3a3a3a"><span style="background-color:#ffffff"><span style="background-color:#eeeeee"><code>>>> x = 1
>>> x = x + 1
2</code></span></span></span>
上面这段程式码是这样运作的:
- 首先,将1 指派给x,此时x 这个变数为1。
- 接着,运算x + 1,得出2 。
( x = x + 1 可以省略一个x,写成 x += 1。算是满常会使用到的用法,可以留心记一下。) - 将2 指派给x,最后得出2 这个值。
x = x +1 在数学世界中是不合逻辑的;但在Python 的世界里,却是常见且合乎逻辑的用法。
变数是一个名称
接续刚刚说的赋值,当你输入x = 1 ,代表将1 指派给x 这个变数(variable)。
变数又是什么呢?
在Python 的世界中,变数就是一个名称。以前面所举的例子来说,x 是一个变数,名称叫做x,而且x 连结1 这个值。
你可以将x 这个变数的名字想像成一个标签,这个标签上有条绳子,连接到1 这个值所放的盒子中。
就像下面这个图这样。
既然说变数是一个名称,那就可以随你来替它命名,只是有4 条规则必须遵守:
- 只能使用英文字母大小写、数字及底线符号_,其他都不行。
空格、-、@、#、$等特殊符号都不行。 - 英文字母大小写有区分,代表不一样的变数。
例如Dog、 dog、 DOG是代表三个不一样的名称,也就是三个不同的变数。 - 不可以使用Python 的保留字(将于下一段说明),这些字有它的功能,不能作为变数来使用。
- 开头不可以是数字,换言之,就是变数开头只能是英文字母或是底线;开头使用底线的名称会被特殊对待, 所以一般变数名称开头以英文字母居多。
除了上述一定要遵守的「天条」之外,还有一个很多过来人都会建议你的小提醒:为变数取一个有意义的名称。你自己看得懂,别人也容易懂的名称。
当你的变数只有一个时,记住它是一件简单的事。
然而,当你的变数有10 个或更多时,你会痛恨自己当初为何不好好取名字,害得你看到每一个变数,就像看到陌生人,认不得。
觉得变数还是很难懂吗?观看下方的影片帮助你认识变数。
2020/12/16更新:Proladon讲解赋值及变数的影片,分享给正在学Python 的你。
因为「赋值」有些拗口,所以本文针对「赋值」这个词,大多以「指派」作表示。
保留字不可以作为变数名称
Python 的保留字包括下方表格所列出的字词,其中T rue、F alse、N one 这三个保留字的首个字母是大写。
(如果你是以手机观看保留字的表格,可以滑动表格最下方的卷轴,以完整观看表格。)
错误的 |
等待 |
别的 |
进口 |
经过 |
没有任何 |
休息 |
除了 |
在 |
增加 |
真的 |
班级 |
最后 |
是 |
返回 |
和 |
继续 |
为了 |
拉姆达 |
尝试 |
作为 |
定义 |
从 |
非本地的 |
尽管 |
断言 |
的 |
全球的 |
不是 |
和 |
异步 |
艾利夫 |
如果 |
或者 |
屈服 |
编写程式码时,大写字母与小写字母是不同的,所以true、false、none 不是保留字。
又例如你要使用print() 函式,若不小心将p 打成大写,Python会将Print 视为一个变数,因为他不是函式。
谨记任何大小写、符号都有它的用意,尤其大写字母与小写字母不可混用,也不可当成一样的东西,否则你的程式码必然错误连连。
每个保留字都有它的功能,不能拿来当成变数,不能指派各种值给它。
从0开始起算
Python 在算顺序的时候,也与我们一般的用法不同。通常排在第1 位的,我们就叫它第1 个,但在Python 中,我们改叫它第0 个,从0 开始起算。
举例来说,hello 这个单字的第一个字母是什么?
一般的情况,我们会说是h,但在Python 的世界里,却是e。
因为电脑中起始值(开始的那个数字)是0,也就是说,第0 个位置(index)才是h,第1 个位置则是e。
Python的资料都是物件
为何要说Python 的资料都是物件?
你可以这么理解:因为Python 不是直接处理电脑记忆体的原始资料,而是在记忆体中,将各种资料值包装成物件,好来跟原始资料做区隔。不然每个电脑里的资料都叫做资料,你永远也搞不懂到底是指什么资料。
换句话说,Python 的每个物件都是一段资料,而每个物件都会至少包含以下4 个元素:
- 型态(type):资料型别,定义这个物件可以做什么。
- ID:这是一个唯一的值,就像人的身份证字号一样,一个号码只能对应到一个人。
- 值(value):必须要与型态一致,每个变数都会连结到一个值,例如布林这个型态的值就只能是True 跟False。
- 参考计数:追踪这个物件被使用的频率。
学习Python 就是在学会怎么去运用各种型态的物件,利用Python 这个程式语言与电脑沟通,让电脑按照我们的意思去帮我们做事情。
而各种型态都有各自的使用规则,基本的型态包括:
- 整数(integer)
- 浮点数(float)
- 布林 (boolean)
- 字串 (string)
- 串列 (list)
- 多元组(tuple)
- 集合 (set)
- 字典 (dictionary)
下方的影片简短的说明资料型态,帮助你了解及加深记忆。
2020/12/16更新:Proladon讲解资料型态的影片,分享给正在学Python 的你。
影片中将「串列」称为「清单」,只是翻译不同,同样都是指list 这个资料型态。
资料型态是「值」的分类,每一个值都只会属于一种资料型态。
区分这么多种型态是有原因,因为Python 需要定义及搜集资料后,才能加以运用,所以对资料进行分类是有必要的。
如果你对于更多Python观念与知识有兴趣,欢迎持续锁定自学成功道。
希望透过阅读书本加强Python的观念吗?推荐你《精通Python》这本书,这本书对于初学者容易搞混观念有相当好的说明与教学,值得一读。
