1. 可變與不可變類型
1.1 ?可變類型
在id不變的情況下,value可以改變,則稱之為可變類型。列表、字典與集合是可變的。
l1 = [1,2,3,4,5] print(id(l1)) l1[1] = 520 #改變列表元素 print(id(l1)) result: 1700748379208 #id不變 1700748379208info = {'name':'言念君子'} print(id(info)) info['name']='溫潤如玉' print(id(info)) result: 1953426847424 1953426847424s1 = {'a','b','c','d'} print(id(s1)) s1.add('zxj') print(id(s1)) result: 2428508547336 2428508547336
?
1.2 不可變類型
value一旦改變,id也改變(id改變意味著創建了新的內存)。整數、浮點數、字符串、元組是不可變類型。
l1 = ['a','c'] tu = (1,2,3,l1) print(tu , id(tu)) l1[1]='zxj' print(tu,id(tu)) result: (1, 2, 3, ['a', 'c']) 1921112815480 (1, 2, 3, ['a', 'zxj']) 1921112815480
2. ?引用計數
引用計數即對一個變量值的引用次數,如:
???? ?? a = 10
??? ??? b = 10
?????? 變量10被引用了2次。
3. 垃圾回收機制
定義變量并不會占用內存,只有在運行變量類型的時候才占用內存,運行完畢后需要釋放內存,解除占用。Python存在一種機制會回收這種占用的內存,即垃圾回收機制。垃圾回收機制在一下兩種情況下會回收內存:
1>程序執行完畢后id被回收;
2>引用計數為0后id被回收。