python3教程(七):python 運算子
python有各種各樣的運算子,不僅僅是+-*/這種算數運算,還有類似於=、+=這種賦值運算。
python中總共有算術運算、賦值運算、比較(關係)運算、邏輯運算、身份運算、成員運算、位運算(二進位制)共7種運算分類。
下面我們將挑一些重要且常用的來進行了解。
算數運算
關於算數運算我們在之前的python3教程(五):number裡面進行了解釋,算術運算的運算子分別為加(+)、減(-)、乘(*)、整除(//)、浮點除(/)、除餘(%)、次方(**)共七個。
賦值運算
我們在上一章變數,裡面的=就是賦值運算子的一種。賦值運算子分別為等於(=)、加後等於(+=)、減後等於(-=)、乘後等於(*=)、整除後等於(//=)、浮點除後等於(/=)、除餘後等於(%=)、乘方後等於(**=)共七個。
#+=就是相加後等於,a+=b就是a=a+b,其他的也是同理# >>> a = 1 >>> b = 2 >>> a += b >>> a 3 >>> a = 1 >>> b = 2 >>> b -= a >>> b 1 >>> a = 4 >>> b = 6 >>> a *= b >>> a 24 >>> a,b = 4,6 >>> a /= b >>> a 0.6666666666666666 >>> a,b = 4,6 >>> b //= a >>> b 1 >>> a,b = 4,6 >>> b %= a >>> b 2 >>> a,b = 4,6 >>> a **= b >>> a 4096
比較(關係)運算
比較(關係)運算主要是對值的大小進行運算,主要有等於(==)、大於( >)、小於(<)、大於等於( >=)、小於等於(<=)、不等於(!=)共六種。
#比較運算子中,涉及到一種資料型別:bool型別,這種型別的資料只有兩個值False(否)和True(對)# #bool型別在其他的資料型別中也有相對應的值,在字串中False和True分別對應空字串和非空字串,在數字中False和True分別對應0和非0數字# #比較運算是一種關係運算,即對兩個值之間是否相等來進行運算,返回的結果只有False和True# #比較運算的關係對比一般用於數字當中# >>> 1 == 1 True >>> 1 == 1 True >>> 1 == 2 False >>> 1 < 2 True >>> 1 <= 2 True >>> 2 < 1 False >>> 2 <= 1 False
邏輯運算
邏輯運算主要用於條件運算,主要有or(或)、and(且)、not(布林型別轉換)
#or表示或,即a or b時,如果a的值為True,則返回a,如果a的值為False,則返回b#
>>> 1 or 2
1
>>> 0 or 1
1
>>> 0 or 2
2
>>> '' or 1
1
#and表示且,即a and b and c時,預設返回a。在運算中,如果a、b、c其中一個值為False,則返回False#
>>> '' and 0 and 1
''
#not是轉換bool型別#
>>> not False
True
>>> not True
False
身份運算
身份運算主要是判斷兩個值是否為同一個記憶體地址,主要有is 和 is not 兩種。
#我們可以使用id()來檢視值的記憶體地址#
>>> id(1)
140718229861200
>>> id(2)
140718229861232
#身份運算主要是判定兩個變數值的記憶體地址是否相等#
>>> a = 1
>>> b = 1
>>> a is b
True
>>> a = 1
>>> b = 0+1
>>> a is b
True
#is 不等同於 ==#
>>> 1 == 1.0
True
>>> 1 is 1.0
False
成員運算
成員運算主要用於判定某個值存在於另一個值內,主要有in和not in兩種。
>>> '1' in '123'
True
>>> '2' not in '456'
True
位運算(二進位制)
位運算主要是把數字看作二進位制來進行計算的,主要有按位與(&)、按位或(|)、按位異或(^)、取反(~)、左移動(<<)、右移動(>>),因為使用並不頻繁,所以就不細說了。
按位與(&):如果兩個二進位都為1,則該位結果為1,否則為0;
按位或(|):只要一個為1,則為1,否則為0;
按位異或(^):兩個二進位相異為為1(即兩個二進位要相反),否則為0;
取反(~):對資料的每個二進位制位取反,即把1變0,把0變1;
左移動(<<):運算數的各二進位全部向左移若干位;
右移動(>>):運算數的各二進位全部向右移若干位;
運算子優先順序
python運算子是有優先順序的,具體的可以檢視python3 運算子大全。python運算子優先順序也可以更改,使用()即可。
>>> 1 + 1 * 3 or 4 and 5
4
>>> (1 + 1) * (3 or (4 and 5))
6