1. 程式人生 > >Python自學---基礎篇(二)變數賦值

Python自學---基礎篇(二)變數賦值

2.1 賦值運算子(=),引用傳遞

我們可以直接將一個固定的數值、字串、算術表示式、、甚至函式賦值給一個變數,也可講一個變數賦值給另一個變數。

anInt = 1
aStr = 'abc'
aFloat = 4 * 5 * 6
aList = [1, 'who', 3.14]

這裡需要提到一個非常基礎且重要的知識點,在Python中,所有的變數都可以理解是記憶體中一個物件的“引用”,變數的賦值是引用傳遞,而非值傳遞。所謂的引用,相當於就是變數的一個別名,對引用的操作與對變數直接操作完全一樣。 可以通過一個例子對這段話做一個理解:

a = 1
id(a)  #輸出變數a的地址
b = 2
id
(b) b = a id(b) print(b)

這段程式碼輸出的結果是:

140360412074952
140360412074928
140360412074952
1

利用id(…)可以輸出某一個變數的地址,可以發現在執行了b = a之後,b不僅與a的值相同,b的地址也與a相同,這也就體現了Python的賦值是“引用傳遞”,即此時b是a的一個別名,這兩個變數所儲存的物件是一個物件(地址,型別,值都相同)。 Python中引用傳遞的概念先提這麼多,在之後介紹物件、函式的過程中會再次遇到。

2.2 一般的賦值語法

Python除了可以直接將一個值或變數賦值給另一個變數之外,也有許多其他的賦值語法。

  1. 鏈式賦值
a = b = c = 1
  1. 增量賦值
a += 1  #等價於a = a + 1
a %= 2  #等價於a = a % 2

需要注意的是Python不支援類似於這樣的自增運算子:x++ ++x

  1. 多元賦值 多元賦值的特性允許一個語句對多個變數分別賦不同值
a, b, c = 1, 2, 3 # a = 1, b = 2, c = 3

這時等號兩邊的物件實際上都是一個元組(tuple),即一個不可變的序列集合,因此嚴格來說,上述程式碼原本的形式是:

(a, b, c) = (1, 2, 3)

當然不加小括號在語法上不會有錯誤,《Python核心程式設計》中建議新增小括號,以增強可讀性。