国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

萬物之基礎(chǔ)——對象

douzifly / 408人閱讀

摘要:每個對象均有標(biāo)識符類型值。通常我們認(rèn)為當(dāng)這些對象被垃圾回收機(jī)制回收時,它占用的外部資源即被釋放。造物主類型對象的類型幾乎影響了該對象的所有功能,在某種程度上,對象的標(biāo)識符也受其類型的影響。

原文地址

對象

對象(Objects)是python中數(shù)據(jù)的抽象,python中所有的數(shù)據(jù)均可以用對象或者是對象之間的關(guān)系來表示。每個對象均有標(biāo)識符(identity)、類型(type)、值(value)

標(biāo)識符。對象一旦創(chuàng)建,那么它的標(biāo)識符就不會改變,可以把標(biāo)識符看作對象在內(nèi)存中的地址。_is_ 操作可以用來比較兩個對象的標(biāo)識符,函數(shù)_id()_用來返回對象標(biāo)識符(python中返回對象在內(nèi)存中的地址)。

類型。對象的類型也是不可變的,對象的類型決定了該對象支持的操作,另外也決定了該對象可能的值。_type()_函數(shù)返回一個對象的類型。

值。一些對象的值可以改變,我們叫它可變對象,字典和列表均屬于可變對象;值不可改變的對象我們叫它不可變對象,數(shù)字、字符串、元組均屬于不可變對象。

python不像C那樣需要顯式地回收對象占用的空間,python內(nèi)核中有垃圾回收機(jī)制,當(dāng)一個對象不可達(dá)時,就會交由垃圾回收機(jī)制處理。

一些對象引用了一些外部資源,例如打開的文件或者窗口。通常我們認(rèn)為當(dāng)這些對象被垃圾回收機(jī)制回收時,它占用的外部資源即被釋放。但是,垃圾回收機(jī)制并不一定會回收這些對象,因此這些對象提供了顯式的方法(通常是_close()_)用來釋放外部資源。程序中最好使用顯式的方法來釋放外部資源,一般可以使用 try...finally 方便地釋放。

造物主:類型!

對象的類型幾乎影響了該對象的所有功能,在某種程度上,對象的標(biāo)識符也受其類型的影響。

先看下面的程序:

>>> sum = 15
>>> sum_add = 12 + 3
>>> sum is sum_add
True
>>> sum = 15000000
>>> sum_add = 10000000 + 5000000
>>> sum is sum_add
False
>>> sum_add == sum
True

對于不可變對象(這里是int),當(dāng)我們需要一個新的對象(sum_add = 12 + 3)時,python可能會返回已經(jīng)存在的某個類型和值都一致的對象(sum)的引用。當(dāng)然,這里只是可能會返回已經(jīng)存在的對象,要看python的具體實現(xiàn)。同樣是創(chuàng)建新的對象sum_add = 10000000 + 5000000,python并沒有把值和類型都一樣的sum返回給sum_add。

>>> value = []
>>> value_1 = []
>>> value is value_1
False
>>> value == value
True
>>> value = value_1 = []
>>> value is value_1
True

對于可變對象,當(dāng)我們需要新的對象時,python一定會為我們新建一個。注意,這里value = value_1 = []將會創(chuàng)建一個空的列表對象,然后同時返回給value和value_1。

撲朔迷離的不可變對象

首先看下面的代碼:

>>> mutability = [1, 2, 3, 4]
>>> immutability = (0, mutability, 5)
>>> immutability
(0, [1, 2, 3, 4], 5)
>>> mutability[2] = "see here!"
>>> immutability
(0, [1, 2, "see here!", 4], 5)

這里元組immutability中一個元素為可變對象列表mutability,當(dāng)我們改變mutability的值時,號稱不可變對象的元組的值竟然發(fā)生了變化。這又是為什么呢?

回答這個問題前,先總結(jié)下上面這段代碼發(fā)生了什么:不可變對象A包含了一個對可變對象B的引用,可變對象B的值發(fā)生改變時,A的值也會發(fā)生改變。

那么,為什么我們?nèi)哉J(rèn)為A是不可變對象呢?因為A仍然包含對象B,而B的標(biāo)識符并沒有發(fā)生變化,也就是說A的所有元素的標(biāo)識符并沒有發(fā)生變化。其實嚴(yán)格來講,不可變對象的值是可以改變的,這里是很微妙的哦,需要好好品味。看下面的代碼吧:

>>> mutability = [1, 2, 3, 4]
>>> id(mutability)
4394446720
>>> immutability = (0, mutability, 5)
>>> id(immutability[1])
4394446720
>>> mutability[2] = "see here!"
>>> id(mutability)
4394446720
>>> id(immutability[1])
4394446720

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/45283.html

相關(guān)文章

  • JavaSE與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識系列——專欄導(dǎo)航

    ??前面的話?? 大家好!這是Java基礎(chǔ)知識與數(shù)據(jù)結(jié)構(gòu)博文的導(dǎo)航帖,收藏我!學(xué)習(xí)Java不迷路! ?博客主頁:未見花聞的博客主頁 ?歡迎關(guān)注?點贊?收藏??留言? ?本文由未見花聞原創(chuàng),CSDN首發(fā)! ?首發(fā)時間:?2021年11月11日? ??堅持和努力一定能換來詩與遠(yuǎn)方! ?參考書籍:?《Java核心技術(shù)卷1》,?《Java核心技術(shù)卷2》,?《Java編程思想》 ?參考在線編程網(wǎng)站:?牛...

    Cc_2011 評論0 收藏0
  • JS修仙一界本源

    摘要:時間一晃就是數(shù)月,齊云早已把界基本情況了解了,不過至于三座大山里隱藏的謎團(tuán)卻遲遲沒有頭緒。它是界本源之一。事實上,根本沒有構(gòu)造函數(shù),或者人人都是構(gòu)造函數(shù)。所以,明白這個界的一界本源,才能在這里暢游天地之間。 自計算機(jī)宇宙誕生以來,有很多大神通者在這里開天辟地,開創(chuàng)了很多界,有C、C++、Java等世界,它們彼此相連,其中有一處叫做JavaScript的世界,自被開辟以來吸引了很多修行者...

    I_Am 評論0 收藏0
  • IOT數(shù)字世界技術(shù)論(上)

    摘要:數(shù)字世界的演化需要萬物有靈,萬物有靈就需要有支配萬物思想行為活動的大腦,這個是數(shù)字世界中萬物之個體能夠成長并形成獨立物格的基礎(chǔ)。 ????????上帝說:要有光!于是,就有了光。在無限光芒的照耀下,我們物理世界開始進(jìn)行演化,然后有了生物的產(chǎn)生和人類文明的誕生和發(fā)展。這西方圣經(jīng)的創(chuàng)世篇,就如我...

    不知名網(wǎng)友 評論0 收藏0
  • 一文帶你讀懂邊緣計算是什么

    摘要:各企業(yè)機(jī)構(gòu)目前普遍有一個新的需求,即跨廣域網(wǎng)使用云功能,并在網(wǎng)絡(luò)邊緣進(jìn)行微小化部署。認(rèn)為,邊緣計算描述的是一種計算拓?fù)洹? 最近,有越來越多的公司開始使用跨多個站點和網(wǎng)絡(luò)的分布式基礎(chǔ)設(shè)施,以實現(xiàn)云計算體系結(jié)構(gòu)的簡化管理和靈活性。各企業(yè)機(jī)構(gòu)目前普遍有一個新的需求,即跨廣域網(wǎng)使用云功能,并在網(wǎng)絡(luò)邊緣進(jìn)行微小化部署。盡管這樣的運營模式還處于早期階段,但許多新出現(xiàn)的用例和場景將從這樣的分布式基礎(chǔ)...

    dadong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<