查了挺久資料,有了自己的理解,記一下
首先要鋪墊一些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...