Python 必備基礎— Variable and Data Type變數宣告與資料型別

Sean Yeh
Python Everywhere -from Beginner to Advanced
9 min readJun 30, 2021

--

Minato ku, Tokyo, Japan, photo by Sean Yeh

何謂變數

變數,就程式撰寫來說,是很基本的一個概念。你可以用以前數學課上面學過的代數X、Y、Z來理解。(例如:Y=X+1,把數字帶入X就可以得到Y的值)在實體世界來說,我們不大會使用到這個概念,不過,我們還是盡可能的以實際世界上的物品來比喻。

收納箱內的物品

開始解釋什麼是變數前,我想請大家想像一下家中的收納箱。想像你有一個收納箱,你拿起一隻筆在標籤紙上寫下「一號箱」三個字,並將它貼在收納箱上面。接下來,把一本讀過的小說(譬如說「飢餓遊戲」)丟進這個收納箱內,並將箱子用膠帶封裝起來。

從此以後,每當你想要找出那本讀過的「飢餓遊戲」,只要找到「一號箱」打開,就可以取出那本舊小說。

再想像一下,假如你將箱子打開,移走那本「飢餓遊戲」,並且將一個聖誕節收到的禮物馬克杯一只,放入「一號箱」裡面,然後與之前一樣將箱子封起來。此後,每當你想要找出那只馬克杯,只要找到「一號箱」打開,就可以取出那杯子;每當尋找到「一號箱」,就會找到那個馬克杯。

「變數」就像家裡的收納箱一樣,是儲存資料的箱子。當程式設計者使用一個變數的時候,應用程式就會配置一塊記憶體給這個變數使用。並且以變數名稱做為辨識此記憶體區塊的標誌。

變數類似Excel的儲存格

我們在從實體世界回到數位的範圍,前面提到「變數像是儲存資料的箱子」。如果你曾經使用過Microsoft Excel試算表,就可以理解。

平時,我們在使用Microsoft Excel試算表時會將數值輸入到儲存格裡面。例如,我們在A2儲存格欄位中輸入定價『100』,並且在B2儲存格欄位中輸入公式『=A2*80%』。這裡的A2儲存格,就像是儲存資料的箱子一樣,儲存了『100』這個數值。

任何程式都會使用變數。變數可用來儲存資料,我們可以將重要的資料存在變數中以供給日後使用。

當變數有變動需要時也比較好變更,只要改變變數的值,就可以改變整個程式運作的結果,可以讓程式碼更為簡潔有組織,更為容易維護。

宣告變數

使用變數需要經過宣告,你可以透過下面的方式使用變數:

name = value

其中,name 是「變數名稱」 = value是「變數值」。值得注意的是:

「=」符號不是數學上的等於

我們從小認知的等號「=」,在這裏(程式的世界)不是指數學上的相等,而是『指派(assign)』的意思,也就是將等號右邊的值「指派」給左邊的名稱。因此「=」被稱為指派算符 (assign operator)

舉例來說:

X = 5

上面的式子表示建立一個以X為名稱的變數,並且指定5為此變數的值。因此,當我們看到「=」符號時,就要先去計算右邊的式子,然後把結果放在左邊的變數裡面。

以前所學的數學運算「等於」符號,在程式裡面要寫成兩個「==」或三個「===」連續等號。這對初學者來說,非常容易搞錯,要特別注意。

Python中的變數

前面我們在解釋變數時,提到變數可用來「儲存」資料。實際上,在Python裡面,不論是字串、數字等等,所有的東西都是物件,與其說變數是儲存資料,變數更像是個「便利貼」標籤(不過大家似乎還是習慣使用箱子或儲存格的方式來說明變數的概念),當你使用『=』符號指派一個變數時,其實是將該變數名稱指向那個值。例如前面提到的X = 5 ,就像是將寫有變數X的便利貼,『貼』在5這個物件上面一樣。

print函式可以確認變數的內容

使用print()可以用來觀察變數的結果。在括弧中置入變數名稱,並且執行print,可以在螢幕中顯示變數的值。我們可以透過這個方式來觀察變數目前的值為何。

print(變數)

舉例來說,在Python Shell或IDEL裡面輸入下面的程式碼:

X = 5print(X)

結果會在螢幕中顯示變數X的值。

更新變數值

當我們賦予一個變數值之後,同樣可以使用『=』符號來賦予新的值。

X = 5print(X)
X = 10print(X)
X = X + 2print(X)

結果在螢幕中顯示:

每當我們重新賦予一個新的值,就產生不同結果。

猜猜看下面程式碼執行的結果為何?

a = 1a = 3a = 5print(a + a + a)

由於Python在執行程式時,是由上而下逐一執行的緣故,在前面行數宣告的變數a會被後面行數宣告的同名變數改變其值。就這個例子來說,變數的值不斷地被改變,直到第三行(a =5 )時才停止,所以第四行列印出來的值就是 5 + 5 + 5 的結果,也就是15。

變數的命名規則

變數在命名時必須遵守一定的命名規則,大致上來說有下面的限制:

  • 不可以用數字開頭,變數名稱的第一個字母必須是大小寫英文字母 。
  • 變數名稱不能與Python保留字或函式名稱相同。

下面列出Python保留字

Python保留字

保留字如print、def、if、else、for 等等,原本就是在Python中會被使用到的,不能被拿來作為變數的名稱,在命名時一定要注意,不要要踩到紅線了。

除以上的限制之外,你可以使用字母大小寫、數字、底線( _ ) 來進行變數的命名。另外,英文字母大小寫不同,視為不同變數名稱。舉例來說,如果要命名為output時,可以使用outputNumber或者是output_number來命名。

資料型別(data type)

程式有各式各樣的資料型態,如果將各種資料依照不同的型態加以分類的話,不同的資料型態給予不同的記憶體配置,可以提高運作的效率。Python 中不同的資料有自己的資料型別(data type),不同的資料型別可以做不一樣的事。

Python的基本型別有下面幾種:

  • 數值型別: int (數值)、float(浮點)
  • 邏輯(布林)型別:bool
  • 字串型別:str

以下簡單介紹Python變數的資料型態。

數值型別

Python 的數值資料型態有整數(int)與浮點(float)。

簡單說,1、2、3等數字就是數值型別,浮點是指帶有小數的數值。例如:整數表示為 num = 5、浮點表示為 num = 2.5

我們可以對數值型別的資料間進行加減乘除等運算。

邏輯(布林)型別

Python 的布林資料型態只有兩個值:True 與 False。當結果為「真」的時候,以True來表示;反之,則以False來表示。需要注意的是,布林資料型別的『True』 與『 False』,其第一個字母皆為大寫。奇表示方式如:isFavorite = True

字串型別

字串就是將整串資料當作文字處理的意思。Python 的字串資料型態為(str)。只要在一段文字內容前後以一對雙引號(”)、或一對單引號( ’)包起來的部分,便能夠被當作字串形態的資料來處理。

例如:

name = “John”

另外,如果連續輸入三個單引號(’’’)或連續輸入三個雙引號(”””),就可以在中間放入多行的字串。

例如:

aboutMe = """我的名字是John我喜歡唱歌跳舞我喜歡python"""

執行後,螢幕顯示的結果:

使用變數的時候,不用特別指定資料型別,因為Python 會根據「變數值」來設定資料型別。

若想在程式中確認變數或者是某個值倒底是屬於何種資料型別,可以使用type()函式來暸解變數目前的資料型態。

type(變數名稱或值)

例如:上面 X=5 的變數X是哪個形態的話,可以用 type(x)來得知。

資料型別轉換

為變數設定正確的資料型態很重要。前面提到,由於Python 會根據「變數值」設定資料型別,一般在使用變數的時候,不用特別指定資料型態。

然而,由Python自行判斷的結果可能不是每一次都盡如人意、剛好是我們所希望的資料型別。

例如:我們希望『10』這個值的資料型態是字串(str)而Python卻自動判斷為是數值(int),這時如果沒有校正為正確的資料型別,就可能發生意想不到的計算錯誤。因此,為確保資料型別是我們確實所希望的型別,就必須進行資料的轉換。

我們可以透過 int() 、float() 或 str() 進行強制資料型態的轉換。

  • int(值) :強制轉換為整數資料型態。
  • float(值):強制轉換為浮點資料型態。
  • str(值) :強制轉換為字串資料型態。

以 str()強制轉換為字串資料型態為例說明:

在使用print印出字串時,如果將字串與數值組合在一起,便會發生錯誤。

age = 20print("小花的年齡為" + age +"歲")

上面的程式碼執行後的結果,會顯示TypeError(紅字部分):

這時候要解決這個問題,需要將數值資料轉換成字串後再組合。

age = 20print("小花的年齡為" + str(age) +"歲")

上面的程式碼執行結果正常,不會顯示錯誤訊息:

--

--

Sean Yeh
Python Everywhere -from Beginner to Advanced

# Taipei, Internet Digital Advertising,透過寫作讓我們回想過去、理解現在並思考未來。並樂於分享,這才是最大贏家。