Value VS Reference
Python 對 immutable 資料型別的變數存的是「值 value」,像是 str 與 tuple。tuple1 = (0, 1, 2, 3) tuple2 = tuple1 tuple2 = tuple2 + (4,) print(tuple1) # (0, 1, 2, 3) print(tuple2) # (0, 1, 2, 3, 4)修改 tuple2 並不會連動到 tuple1。
Python 對 mutable 資料型別的變數存的是「參照 reference」,像是 list 與 dict。
list1 = [0, 1, 2, 3] list2 = list1 list2.remove(1) print(list1) # [0, 2, 3] print(list2) # [0, 2, 3]list1 與 list2 參照到同一份資料。
function arguments
在函式參數的傳遞上,也是套用相同的規則,mutable 資料是 pass by reference,而 immutable 資料是 pass by value。def hello(s, l):
s += ' reviewed'
l.remove(0)
print(s) # Neil reviewed
print(l) # [1, 2]
s = 'Neil'
l = [0, 1, 2]
print(s) # Neil
print(l) # [0, 1, 2]
hello(s, l)
print(s) # Neil
print(l) # [1, 2]
------
---
沒有留言:
張貼留言