比較運算符,也成關系運算符,用於對常量、變量或表達式的結果進行大小、真假等比較,如果比較結果為真,則返回 True;反之,則返回 False。
Python 支持的比較運算符如表 1 所示。
| 比較運算符 | 功能 |
|---|---|
| > | 大於,如果運算符前面的值大於后面的值,則返回 True;否則返回 False |
| >= | 大於或等於,如果運算符前面的值大於或等於后面的值,則返回 True;否則返回 False |
| < | 小於,如果運算符前面的值小於后面的值,則返回 True;否則返回 False |
| <= | 小於或等於,如果運算符前面的值小於或等於后面的值,則返回 True;否則返回 False |
| == | 等於,如果運算符前面的值等於后面的值,則返回 True;否則返回 False |
| != | 不等於,如果運算符前面的值不等於后面的值,則返回 True;否則返回 False |
| is | 判斷兩個變量所引用的對象是否相同,如果相同則返回 True |
| is not | 判斷兩個變量所引用的對象是否不相同,如果不相同則返回 True |
下面程序示范了比較運算符的基本用法:
>>> print("5是否大於 4:", 5 > 4)
5是否大於 4: True
>>> print("3的4次方是否大於等於90.0:", 3 ** 4 >= 90)
3的4次方是否大於等於90.0: False
>>> print("20是否大於等於20.0:", 20 >= 20.0)
20是否大於等於20.0: True
>>> print("5和5.0是否相等:", 5 == 5.0)
5和5.0是否相等: True
>>> print("True和False是否相等:", True == False)
True和False是否相等: False
>>>
比較運算符 == 和 is 的區別
初學 Python,大家可能對 is 比較陌生,很多人會誤將它和 == 的功能混為一談,但其實 is 與 == 有本質上的區別,完全不是一碼事兒。
== 用來比較兩個變量的值是否相等,而 is 則用來比對兩個變量引用的是否是同一個對象,例如:
- import time
- # 獲取當前時間
- a = time.gmtime()
- b = time.gmtime()
- print(a == b) # a和b兩個時間相等,輸出True
- print(a is b) # a和b不是同一個對象,輸出False
上面代碼中 a、b 兩個變量都代表當前系統時間,因此 a、b 兩個變量的時間值是相等的(代碼運行速度很快,能保證是同一時間),故程序使用“==”判斷返回 True。但由於 a、b 兩個變量分別引用不同的對象(每次調用 gmtime() 函數都返回不同的對象),因此a is b返回 False。
那么,如何判斷兩個變量是否屬於一個對象呢?Python 提供了一個全局的 id() 函數,它可以用來判斷變量所引用的對象的內存地址(相當於對象在計算機內存中存儲位置的門牌號),如果兩個對象所在的內存地址相同(相當於它們住在同一個房間內,計算機同一塊內存在任一時刻只能存放一個對象),則說明這兩個對象其實是同一個對象。
由此可見,is 判斷其實就是要求通過 id() 函數計算兩個對象時返回相同的地址。例如,使用 id() 函數判斷上面的 a、b 兩個變量:
print(id(a))
print(id(b))
從運行結果中將會看到 a、b 兩個變量所引用的對象的內存地址是不同的,這樣通過 is 來判斷 a、b 兩個變量自然也就輸出 False 了。
再舉一個例子:
>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> id(a)
2680257978480
>>> id(b)
2680257978480
>>> a is b
True
