來來來,告訴你們一個的祕聞!其實……X先生他是男人👤來的!那Y小姐呢?她哦…是女人💅。
對!變數就像是八掛雜誌中的X先生跟Y小姐。X先生跟Y小姐到底是誰?當然是任你代入囉!
在數學中,我們也有假設變數這方法,如假設X=7,Y=3,Z=X+Y,那Z是多少?(如果你不知道Z是多少,你的體育老師真的會很傷心😭)
同樣地,在Python這些程式語言中,它們允許你宣告(設定)變數(Variable)。變數就是為了方便在程式中調用記憶體中的值而改的名字。
等等!什麼是宣告?什麼是記憶體中的值?
宣告是一個動詞(verb.),當我們說要宣告一個變數時,其實就是告知電腦說,我現在要創造一個東西,這個東西是用來儲存某些數據類型的數據。就如你現在到超市買一個保鮮盒,並為盒子貼上一個標籤--「食物盒」,那你會希望在盒子裡裝的是什麼?當然是食物呀🥑🍈🥐🥔!
那在Python中要如何宣告變數?
很簡單,就像如下的範例1:
>>>a = 7
>>>print(a)
7
首先來每一行的解釋一下。
1. 我們先將整數7賦予如宣告的變數 a。
2. 打印a的值。
3. 結果顯示為7。
範例2:
>>>b = True
>>>print(b)
True
>>>c = “I am so handsome.”
>>>print(c)
I am so handsome.
>>>d= 3.14159
>>>print(d)
3.14159
就如範例1一樣,我們將不同的值(亦是不同的數據類型)賦予給各變數,然後打印出來,結果就會是等於變數中的值。
不知道大家在上述的範例中有沒有發現到Python的某種特性?
Python是不需要事先宣告變數的類型就可以直接賦值!
在a=7中,7是整數,而a是一個我們創建出來的變數名稱。當我們把7賦值給a時,Python會很聰明地自動判斷你賦予的值的類型,並給變數也標籤上同樣的數據類型。
那你現在應該就可以想到b、c、d變數的類型分別就是:布林、字串與浮點數。
在這邊,我們需要先對一個重要的概念有所了解。🤓
在數學課當中,我們都學過 “=” 代表 “等於” 這個意思,但是在程式設計當中,“=” 代表的卻是 “賦值” 的意思。在範例 “a = 7”,我們 應該是從右邊開始讀起,即 “7” 這個整數賦予給 “a” 這個變數。
如範例3:
>>>a = 3
>>>b = a
>>>print(b)
3
我們可以對上面的程式解讀為:
1. 將3賦值給a。
2. 將a賦值給b。
3. 印出b
4. 結果為3。
既然我們了解宣告和賦值,那現在我們就可以來解決「什麼是記憶體中的值」這個問題了。
當我們寫 “a = 3” 時,我們就是把資料(值)儲存到a當中,可是a只是我們取的一個名稱,它還是需要在電腦的物理上存儲著,才可以在程式運行時被電腦調用。那真正的資料又是儲存到哪邊?
是記憶體。
當程式運行時,程式會被載入到記憶體(ram)中,再透過操作系統來進行指令的執行與調用(極簡化說明🤗)。在這時侯,變數(“a”)會被載入到記憶體當中,當程式用到變數的值時(“3”),在記憶體中的值就可以被使用。
會不會有點難懂?簡單來說是,當你要看Netflix時,你會把一些想看的影集(變數的值)放到Mylist當中(記憶體),當想要看影集時(執行程式),你只要到Mylist中找之前儲下來的影集(在記憶體中調用變數)就可以播放了。
同樣地,我們可以透過宣告變數來使程式設計變得更方便與強大。
如範例4:
>>>num1 = 5
>>>num2 = 1
>>>a = num1 + num2
>>>b = num1 - num2
>>>c = num1 * num2
>>>print(a)
6
>>>print(b)
4
>>>print(c)
5
在範例4中,我們先把
1. 5 儲存到num1變數,1 儲存到num2變數。
2. 再把 num1 與 num2分別加減乘,並儲存到 a,b,c當中。
3.印出a,b,c。
這裡的重點在於,變數是可以運算與重複使用。在之後,我們透過不同的運算符與其他規則,就可以更良好地運用變數來設計一個靈活可變的程式。
那如果只改了一個變數名稱,但沒有賦予其任何的值呢?
>>> c
Traceback (most recent call last):
File “<pyshell#13>”, line 1, in <module>
c
NameError: name ‘c’ is not defined
Python就會彈出來告訴你錯了錯了,變數名稱 “c” 未被定義。因為這個名稱沒有被賦予值,所以是無法被調用的。就像是你要去買東西卻發現…
這當然,東西也是買不到啦。。。
最後,我們來介紹一下該如何命名變數
變數名稱只能包括以下字元:
1.小寫字母(a~z)
2.大寫字母(A~Z)
3.數字(0~9)
4.底線(_)
另外,變數名稱是不能以數字為開首,如「92s」。
以下是一些合法的命名:
1.a
2.a_b
3.a32
4._fe1
最後我們要注意有一些名字是保留給Python使用的,不可用作變數名稱: