簡介
:
copy
模組主要用於複製物件,有淺
copy
和深copy
之分。首先得清楚的理解《物件》的概念
物件:
python
萬物皆是物件。
物件分為可變和不可變
2類,可變物件如:
list,dict
等;不可變物件如:基礎型別,元組等。
物件有三大特性分別為:身份
(id(a))
,型別(type(a))
,值(a)
。淺
copy
:
物件是不可變物件時:拷貝物件和原物件的三大特性一致
物件是可變物件時:拷貝物件和原物件的三大特性一致
深
copy
:
物件是不可變物件時:拷貝物件和原物件的三大特性一致
物件是可變物件時:拷貝的物件和原物件的型別和值一致,身份不一致
具體如下:
import copy
x = 1
y = [11]
a = [x, y]
b = copy.copy(a)
print 'a[0] = %s
andb[0] = %s' % (a[0], b[0])
print 'type(a[0]) = %s
andtype(b[0]) = %s' % (type(a[0]),type(b[0]))
print 'id(a[0]) = %s
andid(b[0]) = %s' % (id(a[0]),id(b[0]))
print '*********************'
print 'a[1] = %s
andb[1] = %s' % (a[1], b[1])
print 'type(a[1]) = %s
andtype(b[1]) = %s' %(type(a[1]), type(b[1]))
print 'id(a[1]) = %s
andid(b[1]) = %s' % (id(a[1]),id(b[1]))
結果:a[0] = 1
andb[0] = 1
type(a[0]) =
andtype(b[0]) =
id(a[0]) = 31817608
andid(b[0]) = 31817608
*********************
a[1] = [11]
andb[1] = [11]
type(a[1]) =
andtype(b[1]) =
id(a[1]) = 36362440
andid(b[1]) = 36362440
通過結果發現,a和
b的三大特性完全一致。
import copy
x = 1
y = [11]
a = [x, y]
b = copy.deepcopy(a)
print 'a[0] = %s
andb[0] = %s' % (a[0], b[0])
print 'type(a[0]) = %s
andtype(b[0]) = %s' %(type(a[0]), type(b[0]))
print 'id(a[0]) = %s
andid(b[0]) = %s' % (id(a[0]),id(b[0]))
print '*********************'
print 'a[1] = %s
andb[1] = %s' % (a[1], b[1])
print 'type(a[1]) = %s
andtype(b[1]) = %s' %(type(a[1]), type(b[1]))
print 'id(a[1]) = %s
andid(b[1]) = %s' % (id(a[1]),id(b[1]))
結果:a[0] = 1
andb[0] = 1
type(a[0]) =
andtype(b[0]) =
id(a[0]) = 31555464
andid(b[0]) = 31555464
*********************
a[1] = [11]
andb[1] = [11]
type(a[1]) =
andtype(b[1]) =
id(a[1]) = 36624584
andid(b[1]) =
36635656
通過結果發現,
a[0]
和b[0]
的三大特性完全一致,
a[1]
和b[1]
的型別和值一致,身份不一致。
Python常用模組之二 Queue
python中,佇列是執行緒間最常用的交換資料的形式。queue模組是提供佇列操作的模組,雖然簡單易用,但是不小心的話,還是會出現一些意外。queue佇列的原則時 先進先出,後進後出 常用方法 q.put q.get q.maxsize q.qsize 返回佇列的大小 q.empty 如果隊列為空,...
python常用模組介紹(二)
前言 一 第三方模組 二 常用模組之time 總結上一回我聊了一下關於什麼是模組,為什麼使用模組,模組的分類以及如何匯入模組。那麼今天我想聊一下常用的模組 但是,在說常用模組之前,我想先說一下第三方模組 在python中,安裝第三方模組,是通過setuptools這個工具完成的。python有兩個封...
python常用模組介紹
import random print random.random 0,1 隨機浮點 print random.randint 1,3 1,3 包含兩邊 print random.randrange 1,3 1,3 不包含3 print random.choice 11,22,33,44,55 對可...