python中數值型別是不可變物件,當程式試圖改變資料的值時,程式會重新生成新的資料,而不是改變原來的資料。
python函式的引數都是物件的引用,如果在引用不可變物件時嘗試修改物件,程式會在函式中生成新的物件(開闢新的位址空間),函式外被引用的物件則不會被改變。
num=1
defadd
(num):
num+=1
print(num)
//1
如果想改變num的值,可以通過函式返回值來實現
l = [1, 2]
defadd
(list):
add(l)
print(l)
//[1, 2, 3]
這裡因為函式的引數是引用
深複製和淺複製
1.copy.copy,僅僅複製父物件
2.copy.deepcopy,複製父物件和子物件
import
copy
list1=[1
,2,['a','b']]
list2=list1
list3=copy.copy(list1)
list4=copy.deepcopy(list1)
(3)print(list1,'\n',list2,'\n',list3,'\n',list4)
# [1,2, ['a', 'b', 'c'],3]
# [1,2, ['a', 'b', 'c'],3]
# [1,2, ['a', 'b', 'c']]
# [1,2, ['a', 'b']]
C C 記憶體分配機制
1.c語言中的記憶體機制 在c語言中,記憶體主要分為如下5個儲存區 1 棧 stack 位於函式內的區域性變數 包括函式實參 由編譯器負責分配釋放,函式結束,棧變數失效。2 堆 heap 由程式設計師用malloc calloc realloc分配,free釋放。如果程式設計師忘記free了,則會造...
memcached記憶體分配機制
memcached slab allocator分配機制 slab allocator的基本原理是按照預先規定的大小,將分配的記憶體分割成特定長度的塊,以完全解決記憶體碎片問題。slab allocation的原理相當簡單,就是將分配的記憶體分割成各種尺寸的塊 chunk 並把尺寸相同的塊分成組 c...
Memcache記憶體分配機制
1.page 頁 為記憶體分配的最小單位 memcached 的記憶體分配以page為單位,預設情況下乙個page是1m,可以通過 i引數在啟動時指定。如果需要申請記憶體時,memcached會劃分出乙個新的page並分配給需要的slab區域。page一旦被分配在重啟前不會被 或者重新分配 2.sl...