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]---
---
---
沒有留言:
張貼留言