python的 和 的區別

2021-09-29 03:11:03 字數 1027 閱讀 2827

今天看到一篇文章關於+= 與 +的區別,

區分其中的區別需要了解到可變物件與不可變物件;應為對於物件是否為不可變對這兩種表示式有著一定的區別:

在 python 中任何物件都有的三個通用屬性:唯一標識、型別、值。

唯一標識:用於標識物件的在記憶體中唯一性,它在物件建立之後就不會再改變,函式 id()可以檢視物件的唯一標識

型別:決定了該物件支援哪些操作,不同型別的物件支援的操作就不一樣,比如列表可以有length屬性,而整數沒有。同樣地物件的型別一旦確定了就不會再變,函式 type()可以返回物件的型別資訊。

物件的值與唯一標識不一樣,並不是所有的物件的值都是一成不變的,有些物件的值可以通過某些操作發生改變,值可以變化的物件稱之為可變物件(mutable),值不能改變的物件稱之為不可變物件(immutable)

對於不可變物件值一直都是剛開始建立的值,對它做任何操作都會產生乙個新的物件

常見的不可變物件有:int、tuple、set、str。(整型、元組、集合、字串)

如整型,

a=5a+=5

這裡面的a是乙個不可變物件,再一開始的時候a建立記憶體位址並指向5,但在+=操作之後,物件指向了新的物件,改變的記憶體位址。就產生了新的物件;

x = range(3)

y = x

y會發生了變化

再python種

+= 操作首先會嘗試呼叫物件的 __iadd__方法,如果沒有該方法,那麼嘗試呼叫__add__方法

__add__ 方法接收兩個引數,返回它們的和,兩個引數的值均不會改變。會產生新的物件和記憶體位址。原來的物件保持不變

__iadd__ 方法同樣接收兩個引數,就是說它會改變第乙個引數的值,因為這需要物件是可變的,所以對於不可變物件沒有__iadd__方法。

也就是說要判斷是否產生新的物件需要注意進行運算的物件是否為不可變物件

若可變物件繼續疊加運算則需要注意使用 x+=t 和 x=x+t 的區別;

若為不可變物件則無需注意之間的區別。

「is」和「 」的區別 Python

is用來檢查物件的標識 id id 函式用於獲取物件記憶體位址,而 用來檢查兩個物件引用的變數的值是否相等。通過乙個例子說明。建立一些列表並將其分配給不同的名字。請注意,下面的b指向與a相同的物件 a 1 2,3 b a c 1,2,3 下面來檢查是否相等,你會注意到結果顯示它們都是相等的。prin...

python 和is的區別

python中物件包含的三個基本要素,分別是 id 身份標識 type 資料型別 和value 值 是python標準操作符中的比較操作符,用來比較判斷兩個物件的value 值 是否相等 is也被叫做同一性運算子,這個運算子比較判斷的是物件間的唯一身份標識,也就是id是否相同 舉例 x y 4,5,...

python 和 的區別

相同點 和 都是用於求和 連線運算的 不同點 對於可變物件來說 和 是不一樣的 set和dict沒有這兩個操作 可變物件 相當於對原物件 之後產生乙個新物件 可變物件 相當於修改原物件內部的值,並沒有修改原物件,也就是修改前後物件的記憶體位址不變 id 記憶體位址的整數表示 示例 如下所示 ls 1...