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

歡迎訪問 生活随笔!

生活随笔

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

python

python一个对象只能被一个变量引用吗_python中的对象、变量、引用的问题

發(fā)布時間:2023/12/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python一个对象只能被一个变量引用吗_python中的对象、变量、引用的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

對象、變量、引用

對象

對象包括 不可變對象 和 可變對象。但從某種意義上來說,可變和不可變并不是對立關(guān)系。

int,string,float,tuple 這四類屬于 不可變對象。這里不可變的含義是:對象的地址不可變,內(nèi)存地址與該對象為一一對應(yīng)關(guān)系。

list, dict 這兩類屬于 可變對象。這里可變的含義是:可變對象由不可變對象構(gòu)成,可變對象自身的物理地址不可改變,但構(gòu)成它的不變對象可以被替換

以兩個int對象為例,先來看一個例子:

···

def check_const_variable():

x = 77

y = x

經(jīng)過上兩步操作,x和y現(xiàn)在均指向儲存對象77的內(nèi)存地址 38076456

print('x id:' + str(id(x))) #38076456

print('y id:' + str(id(y))) #38076456

對x進(jìn)行重新賦值,x指向儲存對象69的內(nèi)存地址 38074656

x = 69

print('x id:' + str(id(x))) #38074656

檢查y,發(fā)現(xiàn)y仍然指向38076456,說明77這個對象沒有被改變

print('y id:' + str(id(y))) #38076456

z = [77]

w = z

經(jīng)過上兩步操作,z和w現(xiàn)在均指向儲存對象[77]的內(nèi)存地址 39114944,z的第一個元素地址38074656

print('z id:' + str(id(z))) #39114944

print('w id:' + str(id(w))) #39114944

print('z first element id:' + str(id(z[0]))) #38074656

對z的第一個元素進(jìn)行重新賦值,z從內(nèi)容上來已經(jīng)是一個新的列表,但是它的物理地址沒變。而此時z的第一個元素已經(jīng)被替換。

z[0] = 65

print('z first element id:' + str(id(z[0]))) #38074752

再檢查w,發(fā)現(xiàn)w仍然指向39114944,說明[77]這個對象的地址沒有被改變,w一直指向它。

print('w id:' + str(id(w))) #39114944

print('w first element id:' + str(id(w[0]))) #38074752

···

變量 和 引用

-變量是一個系統(tǒng)表的元素,擁有指向?qū)ο蟮倪B接的空間。

-引用是自動形成的從變量到對象的指針

···

x = 69 #x是一個變量,69是一個不可變對象,x中儲存了69這個不可變對象的內(nèi)存地址

y = [69,33,44] #y是一個變量,[69]是一個可變對象,y中儲存了[69]這個不可變對象的內(nèi)存地址

print id(x) #38074656

print id(y) #39115016

print id(y[0]) #38074656

···

從上面的例子可以看到,x和y的關(guān)系是:y->39115016->[38074656,...,...]

而其中的 箭頭->,就表示引用

創(chuàng)建對象

不可變對象的創(chuàng)建后,相同內(nèi)容的不可變變量 在同一個進(jìn)程中內(nèi)存地址是相同的

···

x = 100

y = 'hello'

z = 156.0

y = 100

print id(x) #38075904

print id(y) #38075904

···

也就是說在這個進(jìn)程中,無論創(chuàng)建幾個100整形變量,它的地址都是38075904。

可變對象創(chuàng)建后,相同內(nèi)容的可變變量 在同一個進(jìn)程中內(nèi)存地址是不同的

···

xx = [100]

yy = [100]

print id(xx) #39115016

print id(yy) #39115376

···

復(fù)制對象

-當(dāng)把一個對象賦給一個數(shù)據(jù)結(jié)構(gòu)元素或者變量名時,python總是會存儲對象的引用,而不是對象的一個拷貝。

-字符串方法都生成了新的字符串對象。

總結(jié)

以上是生活随笔為你收集整理的python一个对象只能被一个变量引用吗_python中的对象、变量、引用的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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