日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python类对象赋值_Python对象赋值、浅拷贝、深拷贝

發(fā)布時(shí)間:2025/3/19 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python类对象赋值_Python对象赋值、浅拷贝、深拷贝 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python中,基本數(shù)據(jù)類(lèi)型,理解為常見(jiàn)數(shù)據(jù)類(lèi)型:布爾型、整型、浮點(diǎn)型、字符串、列表、元組、字典、集合,隨語(yǔ)言不同而不同,但是根據(jù)在內(nèi)存中存儲(chǔ)方式的不同,區(qū)分開(kāi)原子類(lèi)型和容器類(lèi)型。

對(duì)象賦值

對(duì)象的賦值都是進(jìn)行(對(duì)象引用傳遞)/(內(nèi)存地址傳遞)/(內(nèi)存引用),所以當(dāng)一個(gè)對(duì)象改變,另一個(gè)同步改變。

結(jié)合代碼思考

···

will = ["Will", 28, ["Python", "C#", "JavaScript"]] # 元素的數(shù)據(jù)類(lèi)型有原子類(lèi)型和容器類(lèi)型

wilber = will

print id(will) # will的id

print will

print [id(ele) for ele in will] # will中每個(gè)元素的id

print id(wilber) # wilber的id == will的id

print wilber

will[0] = "Wilber" # 改動(dòng)will中的元素0

will[2].append("CSS") # 改動(dòng)will中的元素2

print id(will) # will的id沒(méi)變

print will

print [id(ele) for ele in will]

print id(wilber) # wilber

print wilber

print [id(ele) for ele in wilber]

···

淺拷貝

淺拷貝對(duì)象是容器類(lèi)型,原子類(lèi)型只有對(duì)象賦值。淺拷貝會(huì)新起一個(gè)對(duì)象,將原容器包含的內(nèi)存地址引用過(guò)去。當(dāng)原容器包含的元素有可變的(即容器對(duì)象),容器元素的改變也會(huì)引起新拷貝對(duì)象內(nèi)元素的改變。

結(jié)合代碼思考

import copy

will = ["Will", 28, ["Python", "C#", "JavaScript"]]

wilber = copy.copy(will)

print id(will)

print will

print [id(ele) for ele in will]

print id(wilber)

print wilber

print [id(ele) for ele in wilber]

will[0] = "Wilber"

will[2].append("CSS")

print id(will)

print will

print [id(ele) for ele in will]

print id(wilber)

print wilber

print [id(ele) for ele in wilber]

深拷貝

深拷貝對(duì)象也是容器類(lèi)型,原子類(lèi)型只有對(duì)象賦值。深拷貝和淺拷貝一樣,也會(huì)根據(jù)原對(duì)象深拷貝新起一個(gè)對(duì)象,但是會(huì)將元素里面的容器類(lèi)型的新拷貝一份(默認(rèn)深入新拷貝層數(shù)好像是1),因此原對(duì)象的容器元素改變了,新對(duì)象的容器元素不會(huì)改變。

結(jié)合代碼思考

import copy

will = ["Will", 28, ["Python", "C#", "JavaScript"]]

wilber = copy.deepcopy(will)

print id(will)

print will

print [id(ele) for ele in will]

print id(wilber)

print wilber

print [id(ele) for ele in wilber]

will[0] = "Wilber"

will[2].append("CSS")

print id(will)

print will

print [id(ele) for ele in will]

print id(wilber)

print wilber

print [id(ele) for ele in wilber]

總結(jié)

數(shù)據(jù)結(jié)構(gòu)+算法,需要反復(fù)學(xué)習(xí)+理解+記憶。

總結(jié)

以上是生活随笔為你收集整理的python类对象赋值_Python对象赋值、浅拷贝、深拷贝的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。