Python觀念

Python觀念,從 = 開始

「使你陷入麻煩的,不是你不知道的,而是你以為知道,但其實不是這麼一回事的事情。」  -馬克‧吐溫

當你以為 Python 中的 =,跟你以前在學校上數學課時的 = 一樣時,你等同於在自己學 Python 的路上放上了一個大大的絆腳石。

Python 的觀念(concept)是你對這個程式語言的認知與看法,對於沒有學過程式語言的人來說,Python 就像是一堆數學符號跟英文字母亂碼,套用自己既有的認知來看待這些符號與字母們。

當你開始學 Python ,你會發現有些符號跟數學中的用法一樣,像是加、減、乘、除,都跟在數學中有一樣的功能。

+ 加
- 減
* 乘
/ 除

但你要留心,= 在 Python 世界中有不一樣的功能!

Python觀念:= 是賦值,不是等於

剛開始學 Python ,最容易混淆的就是 = 這個符號。Python 世界的 = 符號, 與數學世界的 = 有完全不同的含義。

就好像同樣是點頭,在台灣代表「好」,但在印度卻是表達「不好」,看起來一樣的動作,卻有不同的意思。

學習 Python的路途上,如果你不打算改變對 = 的既有觀念,那麼你的Python會學得很混亂。

Python 中的 = 符號,代表賦值,是將某一個值指派給你所設定的變數(variable),閱讀時你需要從右讀到左

我們用下面這個例子再詳細說明 = 這個符號 :

>>>  x = 1            
說明:將1指派給 x, x 就是此處設定的變數。

>>>  y = x + 2         
說明:將 x + 2 指派給 y ,y 是設定的變數。

>>>  y                 
說明:在互動式解譯器中會直接印出 y 的值。

3                      
說明:輸出 y 的值等於3。

知道 = 在 Python 中代表賦值後,你會不會有疑問:假如需要表示「等於」,該用什麼符號呢?

Python 中的等於 = = 來表示,不等於 ! = 表示。

因為 = 代表的是賦值,如此一來,下方這個程式碼的邏輯就通了。

>>>  x  =  1
>>>  x =  x + 1      
2

上面這段程式碼是這樣運作的:

  1. 首先,將 1 指派給 x,此時 x 這個變數為 1。
  2. 接著,運算 x + 1,得出 2 。
    ( x = x + 1 可以省略一個x,寫成 x += 1。算是滿常會使用到的用法,可以留心記一下。)
  3. 將 2 指派給 x,最後得出 2 這個值。

x = x +1 在數學世界中是不合邏輯的;但在 Python 的世界裡,卻是常見且合乎邏輯的用法。

變數是一個名稱

接續剛剛說的賦值,當你輸入 x = 1 ,代表將 1 指派給 x 這個變數(variable)。

變數又是什麼呢?

在 Python 的世界中,變數就是一個名稱。以前面所舉的例子來說,x 是一個變數,名稱叫做 x,而且 x 連結 1 這個值。

你可以將 x 這個變數的名字想像成一個標籤,這個標籤上有條繩子,連接到 1 這個值所放的盒子中。

就像下面這個圖這樣。

既然說變數是一個名稱,那就可以隨你來替它命名,只是有 4 條規則必須遵守:

  1. 只能使用英文字母大小寫數字底線符號 _,其他都不行。
    空格、-、@、#、$等特殊符號都不行。
  2. 英文字母大小寫有區分,代表不一樣的變數。
    例如Dog、 dog、 DOG是代表三個不一樣的名稱,也就是三個不同的變數。
  3. 不可使用 Python 的保留字(將於下一段說明),這些字有它的功能,不能作為變數來使用。
  4. 開頭不可以是數字,換言之,就是變數開頭只能是英文字母或是底線;開頭使用底線的名稱會被特殊對待, 所以一般變數名稱開頭以英文字母居多。

除了上述一定要遵守的「天條」之外,還有一個很多過來人都會建議你的小提醒:為變數取一個有意義的名稱。你自己看得懂,別人也容易懂的名稱。

當你的變數只有一個時,記住它是一件簡單的事。

然而,當你的變數有 10 個或更多時,你會痛恨自己當初為何不好好取名字,害得你看到每一個變數,就像看到陌生人,認不得。

覺得變數還是很難懂嗎?觀看下方的影片幫助你認識變數。

2020/12/16更新:Proladon 講解賦值及變數的影片,分享給正在學 Python 的你。
因為「賦值」有些拗口,所以本文針對「賦值」這個詞,大多以「指派」作表示。

保留字不可以作為變數名稱

Python 的保留字包括下方表格所列出的字詞,其中 True、False、None 這三個保留字的首個字母是大寫。

(如果你是以手機觀看保留字的表格,可以滑動表格最下方的卷軸,以完整觀看表格。)

False

await

else

import

pass

None

break

except

in

raise

True

class

finally

is

return

and 

continue

for 

lambda

try

as

def 

from

nonlocal

while

assert

del

global

not

with

async

elif

if

or

yield

編寫程式碼時,大寫字母與小寫字母是不同的,所以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 個元素:

  1. 型態(type):資料型別,定義這個物件可以做什麼。
  2. ID:這是一個唯一的值,就像人的身份證字號一樣,一個號碼只能對應到一個人。
  3. 值(value):必須要與型態一致,每個變數都會連結到一個值,例如布林這個型態的值就只能是 True 跟 False。
  4. 參考計數:追蹤這個物件被使用的頻率。

學習 Python 就是在學會怎麼去運用各種型態的物件,利用 Python 這個程式語言與電腦溝通,讓電腦按照我們的意思去幫我們做事情。

而各種型態都有各自的使用規則,基本的型態包括:

下方的影片簡短的說明資料型態,幫助你了解及加深記憶。

2020/12/16更新:Proladon講解資料型態的影片,分享給正在學 Python 的你。
影片中將「串列」稱為「清單」,只是翻譯不同,同樣都是指 list 這個資料型態。

資料型態是「值」的分類,每一個值都只會屬於一種資料型態。

區分這麼多種型態是有原因,因為 Python 需要定義及蒐集資料後,才能加以運用,所以對資料進行分類是有必要的。

如果你對於更多 Python觀念與知識有興趣,歡迎持續鎖定自學成功道

希望透過閱讀書本加強Python的觀念嗎?推薦你《精通Python》這本書,這本書對於初學者容易搞混觀念有相當好的說明與教學,值得一讀。

延伸閱讀:

5本Python書推薦,強化你的程式語言觀念

看不懂程式碼?免費「程式語言家教」在這裡!

12個入門Python線上課程:讓你快速學會寫程式

學Python可以做什麼:9個Python應用報你知

Python正規表示式:不一定要會,但會了超省力

Python if 陳述句的基礎與操作

Python for 迴圈(loop)的基本認識與7種操作

Python字串基礎與20種常見操作

Python串列(list) 基礎與23個常用操作

Python有了串列(list),為何還要有元組(tuple) ?

Python字典(dictionary)基礎與16種操作

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *