python在heap中分配的物件分成兩類:可變物件和不可變物件。所謂可變物件是指,物件的內容是可變的,例如list。而不可變的物件則相反,表示其內容不可變。
1、淺拷貝和深拷貝
淺拷貝實施方式:(1)完全切片操作[:],(2)利用工廠函式,比如list(),dict()等,(3)使用copy 模組的copy 函式.
深拷貝實施方式:(1)使用copy模組的deepcopy函式
一、不可變物件
由於python中的變數存放的是物件引用,所以對於不可變物件而言,儘管物件本身不可變,但變數的物件引用是可變的。運用這樣的機制,有時候會讓人產生糊塗,似乎可變物件變化了。如下面的**:
python
i = 73
i += 2
從上面得知,不可變的物件的特徵沒有變,依然是不可變物件,變的只是建立了新物件,改變了變數的物件引用。
看看下面的**,更能體現這點的。
python**
#因為258是int物件,是不可變物件的。所以下面3個id的值都是一樣的,最後一句的結果也是為true
#有點奇怪的是為什麼在idle,和在指令碼執行的結果不太一樣。所以下面的**請在指令碼中執行。
print(id(258))
a = 258
print(id(a))
b = 258
print(id(b))
print(a is b)
二、對於可變物件
其物件的內容是可以變化的。當物件的內容發生變化時,變數的物件引用是不會變化的。如下面的例子。
python**
m=[5,9]
m+=[6]
python可迭代 python中可迭代物件有哪些
python中的可迭代物件有哪些?python中的可迭代物件有 列表 元組 字典 字串 常結合for迴圈使用 判斷乙個物件是不是可迭代物件 from collections import iterable isinstance list range 100 iterable isinstance s...
Python 可迭代物件
1.可迭代物件 以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別 如 list tuple dict set str等 一類是generator,包括生成器和帶yield 的 generator function 這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 2...
python可迭代物件
0 在python中只要是能用for in的,都是可迭代物件,讓我們看下定義 定義 我們已經知道可以對list tuple dict set str等型別的資料使用for in 的迴圈語法,會從其中依次拿到資料元素進行使用,我們把這樣的過程稱為遍歷,也叫迭代。所以我們把可以通過for in 這類語句...