Python中的is運算子

2021-10-04 22:55:36 字數 1438 閱讀 4568

查了挺久資料,有了自己的理解,記一下

首先要鋪墊一些python的知識

分別是id,type,value

大家都知道,當我們定義乙個物件時,編譯器會為該物件在記憶體池開闢相應的記憶體空間,而id就是這塊記憶體的記憶體位址,可以通過id()獲取。

type是資料型別(class),可以通過type()函式獲取。

value便是這個物件的值。

在python中,整數、浮點數、複數、字串、元組都是不可變型別

即該型別的物件一旦建立了,就不能修改。

有人可能會問了

a =

1a =

2

這a不是整數(不可變型別)嗎,不是修改了嗎?

其實a並不是物件,可以理解為指標,

而is判斷的就是兩個物件id是否相同,也就是判斷兩個物件在記憶體中是不是就是乙個物件。

這樣說可能有點懵,我們看下例項:

a =

1b =

1print

(a is b)

這裡的輸出結果是true。為什麼呢?明明是兩個不同的變數啊。

其實不然。變數識別符號不同,並不代表這兩個不是同個物件

就好像李華,在家裡媽媽喜歡叫他小華,在單位同事叫他老李,其實都是同個人,只是叫法不一樣罷了。

那在python中如何判斷兩個物件是不是同個物件呢?

很簡單,就是用物件的id,兩個變數指向的物件id相同,便是同個物件。

那為什麼不可變型別數值(value)相同就會是同個物件呢?

這句話其實不全對。只有在同個函式內建立的相同值不可變型別物件時,python才會使用先前已經建立的值相同的物件,因為不可變型別的物件是不能修改的,不必擔心物件的修改影響到其他變數,所以python採用了這種方法節省記憶體。

def

create()

: a =

("a"

,"b"

)return a

defcreate2()

: a =

("a"

,"b"

)return a

a =(

"a",

"b")

d =(

"a",

"b")

c = create2(

)b = create(

)d = create2(

)print

(a is d)

# true

print

(a is b)

# false

print

(b is c)

# false

print

(c is d)

# true

python 運算子 Python運算子

python語言支援以下型別的運算子 算術運算子 比較 關係 運算子 賦值運算子 邏輯運算子 位運算子 成員運算子 身份運算子 運算子優先順序 1 算術運算子 加號 減號 乘 除 取餘 乘方 整除 1 其中除號 要注意 在python2中,用作整除。解決方法有三 1 兩個相除的數中有乙個為實數。2 ...

python 運算子 python(運算子)

一 運算子 1.算數運算子 1 加 注意 字串與整數之間不能進行相加,需要通過str 或int 進行轉換資料型別 整數與整數相加 1 1 浮點數與浮點數相加 2.0 2.0 4.0 二進位制儲存精度誤差 1.1 1.3 2.4000000000000004 整數與浮點數相加 2 2.0 4.0字串之...

python運算子中 Python中的運算子

python中的運算子 數 算符 比較運算子 邏輯運算子 賦值運算子 1.數 算符 乘法 除法 取模 取餘 求餘數 整除 冪運算 1 和數學中的功能一模一樣,沒有區別 print 1 1 print 1 1 print 1 1 注意 的結果是浮點數。print 1 1 1.0 print 5 2 2...