Python基礎 Python可變物件和不可變物件

2021-09-01 14:16:30 字數 889 閱讀 2318

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 這類語句...