創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
成都創新互聯專注于沈河企業網站建設,響應式網站設計,商城建設。沈河網站建設公司,為沈河等地區提供建站服務。全流程按需網站策劃,專業設計,全程項目跟蹤,成都創新互聯專業和態度為您提供的服務不懂Python中的對象是什么意思?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。
Python中的對象
在Python中,一切都是對象。為了證明,你可以打開一個REPL并探索使用isinstance():
>>> isinstance(1, object) True >>> isinstance(list(), object) True >>> isinstance(True, object) True >>> def foo(): ... pass ... >>> isinstance(foo, object) True
此代碼向您顯示Python中的所有內容確實是一個對象。每個對象至少包含三個數據:
參考計數、類型、值
該引用計數為內存管理。要深入了解Python中的內存管理內部。
該類型在CPython層使用,以確保運行時的類型安全性。最后,有值,即與對象關聯的實際值。
但并非所有對象都是相同的。您還需要了解另一個重要的區別:不可變對象和可變對象。理解對象類型之間的差異確實有助于闡明Python中的指針。
不可變對象和可變對象
在Python中,有兩種類型的對象:
無法更改的不可變對象、可以改變的可變對象。
理解這種差異是在Python中學習指針的第一個關鍵。以下是常見類型的細分以及它們是否可變或不可變:
Type Immutable? int Yes float Yes bool Yes complex Yes tuple Yes frozenset Yes str Yes list No set No dict No
如您所見,許多常用的基元類型是不可變的。您可以通過編寫一些Python來證明這一點。您需要Python標準庫中的一些工具:
id() 返回對象的內存地址。
isTrue當且僅當兩個對象具有相同的內存地址時才返回。
再一次,您可以在REPL環境中使用它們:
>>> x = 5 >>> id(x) 94529957049376
在上面的代碼中,已分配的值5來x。如果您嘗試使用add修改此值,那么您將獲得一個新對象:
>>> x + = 1 >>> x 6 >>> id (x ) 94529957049408
即使上面的代碼似乎修改了值x,你也會得到一個新對象作為響應。
該str類型也是不變的:
>>> s = "real_python" >>> id(s) 140637819584048 >>> s += "_rocks" >>> s 'real_python_rocks' >>> id(s) 140637819609424
同樣,操作后s最終會有不同的內存地址+=。
對于某些對象list,+=將轉換為__iadd__()(就地添加)。這將修改self并返回相同的ID。但是,str并int沒有這些方法而導致__add__()調用而不是__iadd__()。
試圖直接改變字符串會s導致錯誤:
>>> s[0] = "R" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
上面的代碼失敗了,Python表明它str不支持這種突變,這與該str類型是不可變的定義一致。
與可變對象形成對比,例如list:
>>> my_list = [1, 2, 3] >>> id(my_list) 140637819575368 >>> my_list.append(4) >>> my_list [1, 2, 3, 4] >>> id(my_list) 140637819575368
此代碼顯示了兩種類型對象的主要區別。my_list最初有一個id。即使在4附加到列表后,my_list也具有相同的 ID。這是因為list類型是可變的。
證明列表可變的另一種方法是賦值:
>>> my_list[0] = 0 >>> my_list [0, 2, 3, 4] >>> id(my_list) 140637819575368
在此代碼中,您my_list將其第一個元素變異并設置為0。但是,即使在此分配之后,它仍保持相同的ID。隨著可變和不可變對象的出現,的下一步是理解Python的變量生態系統。
感謝你能夠認真閱讀完這篇文章,希望小編分享Python中的對象是什么意思內容對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯-成都網站建設公司行業資訊頻道,遇到問題就找創新互聯,詳細的解決方法等著你來學習!
新聞標題:Python中的對象是什么意思-創新互聯
標題網址:http://vcdvsql.cn/article26/jidjg.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、App設計、網站設計公司、建站公司、云服務器、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯