python运算符的分类_python对象——标准类型运算符
對象值的比較
比較運算符用來判斷同類型對象是否相等,所有的內建類型均支持比較運算,比較運算返回布爾值 True 或 False。
注意,實際進行的比較運算因類型而異。換言之,數字類型根據數值的大小和符號比較,字符串按照字符序列值進行比較,等等。
>>> 2 == 2
True
>>> 2.46 <= 8.33
True
>>> 5+4j >= 2-3j
True
>>> 'abc' == 'xyz'
False
>>> 'abc' > 'xyz'
False
>>> 'abc' < 'xyz'
True
>>> [3, 'abc'] == ['abc', 3]
False
>>> [3, 'abc'] == [3, 'abc']
True
不同于很多其它語言,多個比較操作可以在同一行上進行,求值順序為從左到右。
>>> 3 < 4 < 7 # same as ( 3 < 4 ) and ( 4 < 7 )
True
>>> 4 > 3 == 3 # same as ( 4 > 3 ) and ( 3 == 3 )
True
我們會注意到比較操作是針對對象的值進行的,也就是說比較的是對象的數值而不是對象本身。
對象身份比較
作為對值比較的補充,Python 也支持對象本身的比較。對象可以被賦值到另一個變量(通過引用)。因為每個變量都指向同一個(共享的)數據對象,只要任何一個引用發生改變,該對象的其它引用也會隨之改變。
例 1: foo1 和 foo2 指向相同的對象
foo1 = foo2 = 4.3
當你從值的觀點看這條語句時, 它表現的只是一個多重賦值,將 4.3 這個值賦給了 foo1和 foo2 這兩個變量。這當然是對的, 不過它還有另一層含義。 事實是一個值為 4.3 的數字對象被創建,然后這個對象的引用被賦值給 foo1 和 foo2, 結果就是 foo1 和 foo2指向同一個對象。
例 2: foo1 和 foo2 指向相同的對象
foo1 = 4.3
foo2 = foo1
這個例子非常類似上一個,一個值為 4.3 的數值對象被創建,然后賦給一個變量, 當執行foo2 = foo1 時, foo2 被指向 foo1 所指向的同一個對象, 這是因為 Python 通過傳遞引用來處理對象。foo2 就成為原始值 4.3 的一個新的引用。 這樣 foo1 和 foo2 就都指向了同一個對象。
例 3: foo1 和 foo2 指向不同的對象
foo1 = 4.3
foo2 = 1.3 + 3.0
這個例子有所不同。首先一個數字對象被創建,然后賦值給 foo1. 然后第二個數值對象被創建并賦值給 foo2. 盡管兩個對象保存的是同樣大小的值,但事實上系統中保存的都是兩個獨立的對象,其中 foo1 是第一個對象的引用, foo2 則是第二個對象的引用。盡管這兩個對象有同樣大小的數值。
每個對象都天生具有一個計數器,記錄它自己的引用次數。這個數目表示有多少個變量指向該對象。Python提供了 is和 is not 運算符來測試兩個變量是否指向同一個對象。
a is b
這個表達式等價于下面的表達式
id(a) == id(b)
>>> a = [ 5, 'hat', -9.3]
>>> b = a
>>> a is b
True
>>> a is not b
False
標準類型對象身份比較運算符
運算符 功能
obj1 is obj2 obj1 和 obj2 是同一個對象
obj1 is not obj2 obj1 和 obj2 不是同一個對象
布爾類型
布爾邏輯運算符 and, or 和 not 都是 Python 關鍵字,這些運算符的優先級按從高到低的順序not、and、or; not 運算符擁有最高優先級,只比所有比較運算符低一級。 and 和 or運算符則相應的再低一級。
標準類型布爾運算符
運算符 功能
not expr expr 的邏輯非 (否)
expr1 and expr2 expr1 和 expr2 的邏輯與
expr1 or expr2 expr1 和 expr2 的邏輯或
總結
以上是生活随笔為你收集整理的python运算符的分类_python对象——标准类型运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python词云代码简单_Python
- 下一篇: python安装sqlite3_Pyth