新聞中心
不懂Python中的對(duì)象是什么意思?其實(shí)想解決這個(gè)問(wèn)題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。
十年的華坪網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整華坪建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“華坪網(wǎng)站設(shè)計(jì)”,“華坪網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
Python中的對(duì)象
在Python中,一切都是對(duì)象。為了證明,你可以打開(kāi)一個(gè)REPL并探索使用isinstance():
>>> isinstance(1, object) True >>> isinstance(list(), object) True >>> isinstance(True, object) True >>> def foo(): ... pass ... >>> isinstance(foo, object) True
此代碼向您顯示Python中的所有內(nèi)容確實(shí)是一個(gè)對(duì)象。每個(gè)對(duì)象至少包含三個(gè)數(shù)據(jù):
參考計(jì)數(shù)、類型、值
該引用計(jì)數(shù)為內(nèi)存管理。要深入了解Python中的內(nèi)存管理內(nèi)部。
該類型在CPython層使用,以確保運(yùn)行時(shí)的類型安全性。最后,有值,即與對(duì)象關(guān)聯(lián)的實(shí)際值。
但并非所有對(duì)象都是相同的。您還需要了解另一個(gè)重要的區(qū)別:不可變對(duì)象和可變對(duì)象。理解對(duì)象類型之間的差異確實(shí)有助于闡明Python中的指針。
不可變對(duì)象和可變對(duì)象
在Python中,有兩種類型的對(duì)象:
無(wú)法更改的不可變對(duì)象、可以改變的可變對(duì)象。
理解這種差異是在Python中學(xué)習(xí)指針的第一個(gè)關(guān)鍵。以下是常見(jiàn)類型的細(xì)分以及它們是否可變或不可變:
Type Immutable? int Yes float Yes bool Yes complex Yes tuple Yes frozenset Yes str Yes list No set No dict No
如您所見(jiàn),許多常用的基元類型是不可變的。您可以通過(guò)編寫一些Python來(lái)證明這一點(diǎn)。您需要Python標(biāo)準(zhǔn)庫(kù)中的一些工具:
id()返回對(duì)象的內(nèi)存地址。
isTrue當(dāng)且僅當(dāng)兩個(gè)對(duì)象具有相同的內(nèi)存地址時(shí)才返回。
再一次,您可以在REPL環(huán)境中使用它們:
>>> x = 5 >>> id(x) 94529957049376
在上面的代碼中,已分配的值5來(lái)x。如果您嘗試使用add修改此值,那么您將獲得一個(gè)新對(duì)象:
>>> x + = 1 >>> x 6 >>> id (x ) 94529957049408
即使上面的代碼似乎修改了值x,你也會(huì)得到一個(gè)新對(duì)象作為響應(yīng)。
該str類型也是不變的:
>>> s = "real_python" >>> id(s) 140637819584048 >>> s += "_rocks" >>> s 'real_python_rocks' >>> id(s) 140637819609424
同樣,操作后s最終會(huì)有不同的內(nèi)存地址+=。
對(duì)于某些對(duì)象list,+=將轉(zhuǎn)換為_(kāi)_iadd__()(就地添加)。這將修改self并返回相同的ID。但是,str并int沒(méi)有這些方法而導(dǎo)致__add__()調(diào)用而不是__iadd__()。
試圖直接改變字符串會(huì)s導(dǎo)致錯(cuò)誤:
>>> s[0] = "R" Traceback (most recent call last): File "", line 1, in TypeError: 'str' object does not support item assignment
上面的代碼失敗了,Python表明它str不支持這種突變,這與該str類型是不可變的定義一致。
與可變對(duì)象形成對(duì)比,例如list:
>>> my_list = [1, 2, 3] >>> id(my_list) 140637819575368 >>> my_list.append(4) >>> my_list [1, 2, 3, 4] >>> id(my_list) 140637819575368
此代碼顯示了兩種類型對(duì)象的主要區(qū)別。my_list最初有一個(gè)id。即使在4附加到列表后,my_list也具有相同的 ID。這是因?yàn)閘ist類型是可變的。
證明列表可變的另一種方法是賦值:
>>> my_list[0] = 0 >>> my_list [0, 2, 3, 4] >>> id(my_list) 140637819575368
在此代碼中,您my_list將其第一個(gè)元素變異并設(shè)置為0。但是,即使在此分配之后,它仍保持相同的ID。隨著可變和不可變對(duì)象的出現(xiàn),的下一步是理解Python的變量生態(tài)系統(tǒng)。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Python中的對(duì)象是什么意思內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
網(wǎng)頁(yè)標(biāo)題:Python中的對(duì)象是什么意思
標(biāo)題來(lái)源:http://fisionsoft.com.cn/article/gjsiis.html