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

資訊專欄INFORMATION COLUMN

萬物之基礎——對象

douzifly / 415人閱讀

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

原文地址

對象

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

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

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

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

python不像C那樣需要顯式地回收對象占用的空間,python內核中有垃圾回收機制,當一個對象不可達時,就會交由垃圾回收機制處理。

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

造物主:類型!

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

先看下面的程序:

>>> 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),當我們需要一個新的對象(sum_add = 12 + 3)時,python可能會返回已經存在的某個類型和值都一致的對象(sum)的引用。當然,這里只是可能會返回已經存在的對象,要看python的具體實現。同樣是創建新的對象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

對于可變對象,當我們需要新的對象時,python一定會為我們新建一個。注意,這里value = value_1 = []將會創建一個空的列表對象,然后同時返回給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,當我們改變mutability的值時,號稱不可變對象的元組的值竟然發生了變化。這又是為什么呢?

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

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

>>> 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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/45283.html

相關文章

  • JavaSE與數據結構基礎知識系列——專欄導航

    ??前面的話?? 大家好!這是Java基礎知識與數據結構博文的導航帖,收藏我!學習Java不迷路! ?博客主頁:未見花聞的博客主頁 ?歡迎關注?點贊?收藏??留言? ?本文由未見花聞原創,CSDN首發! ?首發時間:?2021年11月11日? ??堅持和努力一定能換來詩與遠方! ?參考書籍:?《Java核心技術卷1》,?《Java核心技術卷2》,?《Java編程思想》 ?參考在線編程網站:?牛...

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

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

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

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

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

    摘要:各企業機構目前普遍有一個新的需求,即跨廣域網使用云功能,并在網絡邊緣進行微小化部署。認為,邊緣計算描述的是一種計算拓撲。 最近,有越來越多的公司開始使用跨多個站點和網絡的分布式基礎設施,以實現云計算體系結構的簡化管理和靈活性。各企業機構目前普遍有一個新的需求,即跨廣域網使用云功能,并在網絡邊緣進行微小化部署。盡管這樣的運營模式還處于早期階段,但許多新出現的用例和場景將從這樣的分布式基礎...

    dadong 評論0 收藏0

發表評論

0條評論

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