初識 Python - 變數與基本運算

Python 是一種直譯式、物件導向的程式語言,它跟 JavaScript 一樣都擁有完整的函式庫和方法。在變數宣告上,它不需要寫上 var、let 或 const,直接用 = 就可以宣告變數,而且 Python 具有刪除變數的功能,可以收回佔據動態記憶體的空間,減少工程師的犯錯機會。


變數的位址

跟 JS 不同的是,JS 透過三大巨頭關鍵字來宣告變數和決定作用域,而 Python 只用一個等號就可以宣告:

1
2
age = 18
print(age) # 18

在 JS,宣告變數即使沒有賦值,它會先在記憶體空間預留位置給這個變數,而且不能透過指令方法刪除;在 Python,宣告變數的意思是它會在記憶體中儲存這個變數的值,這個值就會有一個記憶體位址,若今天有別的變數也宣告了同樣的值,這兩個變數都會指向同一個位址。

1
2
3
4
5
6
x = 10
y = 10
z = 20
id(x) # 1614727440
id(y) # 1614727440
id(z) # 1614727600

底線開頭或結尾開頭的變數

底線 _ 在 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
    3
    x, y = 10, 20
    x, y = y, x
    print(x, y) # 20, 10
  • 方法二:暫存到別的變數去
    1
    2
    3
    4
    5
    6
    7
    x, y = 1, 2
    print(x, y) #1, 2

    tamp = x
    x = y
    y = tamp
    print(x, y) #2, 1

刪除變數

按照 Python 的回收機制,宣告後變數是可以透過指令刪除的

1
2
name = 'John'
del name

透過指令刪除的變數,它會釋放原本佔據的記憶體空間位址,刪除後想要再呼叫變數就會出現未宣告錯誤。


運算的優先順序

除了一般熟知的「先乘除、後加減」、小括號裡的運算先做,另外若有次方運算,也是優先處理,優先順序如下:

  1. 次方(**)
  2. 乘(*)、除(/)、求餘數(%)、求整數(//),依照出現順序運算
  3. 加(+)、減(-),依照出現順序運算
dark
sans