Python 是一種直譯式、物件導向的程式語言,它跟 JavaScript 一樣都擁有完整的函式庫和方法。在變數宣告上,它不需要寫上 var、let 或 const,直接用 = 就可以宣告變數,而且 Python 具有刪除變數的功能,可以收回佔據動態記憶體的空間,減少工程師的犯錯機會。
變數的位址
跟 JS 不同的是,JS 透過三大巨頭關鍵字來宣告變數和決定作用域,而 Python 只用一個等號就可以宣告:
1 | age = 18 |
在 JS,宣告變數即使沒有賦值,它會先在記憶體空間預留位置給這個變數,而且不能透過指令方法刪除;在 Python,宣告變數的意思是它會在記憶體中儲存這個變數的值,這個值就會有一個記憶體位址,若今天有別的變數也宣告了同樣的值,這兩個變數都會指向同一個位址。
1 | x = 10 |
底線開頭或結尾開頭的變數
底線 _ 在 Python 又稱匿名變數或者虛擬變數,但它在寫 Python 語法時也有很多用途和意義:
Python 語法:
- 用來跳過不想宣告的變數,代表我不想處理它
- 用在 Python 的 REPL 的話,底線也代表上一段程式碼處理的結果
變數命名:
- 變數名稱前加上底線:
_test
- 代表是在測試中或者一般不想直接被取用
- 變數名稱後加上底線:
test_
- 這種命名方式代表不想跟 Python 關鍵字或內建函式有相同名稱時,會在變數名稱後面加上底線,例如:list_、dict_
- 變數名稱前加上雙底線:
__test
- 保留給 Python 內建變數或方法使用
- 變數名稱前後加上雙底線:
__test__
- 也是代表不想直接被取用的變數,在各種設定檔中很常見
- 底線本身也是一個合法的變數名稱
- 變數名稱前加上底線:
等號的多重指定
在 Python,可以一次宣告多個變數:
1 | x = y = z = 10 |
也可以一次修改各自的值:
1 | x, y, z = 20, 30, 40 |
比較有趣的就是變數彼此之間交換值:
- 方法一:直接對調
1
2
3x, y = 10, 20
x, y = y, x
print(x, y) # 20, 10 - 方法二:暫存到別的變數去
1
2
3
4
5
6
7x, y = 1, 2
print(x, y) #1, 2
tamp = x
x = y
y = tamp
print(x, y) #2, 1
刪除變數
按照 Python 的回收機制,宣告後變數是可以透過指令刪除的
1 | name = 'John' |
透過指令刪除的變數,它會釋放原本佔據的記憶體空間位址,刪除後想要再呼叫變數就會出現未宣告錯誤。
運算的優先順序
除了一般熟知的「先乘除、後加減」、小括號裡的運算先做,另外若有次方運算,也是優先處理,優先順序如下:
- 次方(**)
- 乘(*)、除(/)、求餘數(%)、求整數(//),依照出現順序運算
- 加(+)、減(-),依照出現順序運算