運算符
算術運算符
運算符 | 描述 | 實測 |
---|---|---|
+ | 加:兩個對象相加 | 1+1=3 |
- | 減:第一個數減去第二個數 | 1-1=0 |
* | 乘;兩個對象相乘 | 1*1=1 |
/ | 除;第一個數除以第二個數 | 1/1=1 |
** | 冪:返回x的y此冪 | 10**20 10的20次方 |
// | 取整除:返回商的整數部分 | 9//2=4.5取整就是4 |
% | 取模:返回除法的餘數 | 9%2=4.5無法整除返回爲1 9.2%2=1.1999999999999993詳情參考Python中的取模運算 |
算術運算符只能對int和float做運算
自然除就是我們正常理解的數學計算,取整除是取結果的整數部分
在python3中,所有的除法都是自然除,返回的都是float;python2中的除法都是取整除,返回的都是int
例7:運算
In [22]: 1 + 1
Out[22]: 2
In [23]: 1 + 1.2 # 會隱式轉換爲float進行計算
Out[23]: 2.2
In [24]: type(1 + 1.2)
Out[24]: float
例8:python2與python3除法區別
In [25]: 3 / 2 # python3自然除
Out[25]: 1.5
>>> 3 / 2 # python2整除
1
>>> float(3) / 2 # python2中自然除的方法
1.5
>>> 5.0 / 2 # python2中自然除的方法
2.5
例9:python3的除法,返回全部都是float
In [27]: type(4/2)
Out[27]: float
比較運算符
- >:大於
- <:小於
- ==:等於
- !=:不等於,python2中有<>不等於的寫法,但是在python3中已廢棄
- >=:大於或等於
- <=:小於或等於
注意:比較運算的返回值都是bool類型
例9:比較運算符
In [27]: 3 > 5
Out[27]: False
In [28]: 5 > 3
Out[28]: True
In [29]: 5 != 3
Out[29]: True
邏輯運算符
- and:與
- or:或
- not:非
邏輯運算符的操作數都是bool類型或者可以隱式轉換成bool類型的類型,返回值都是bool類型
例10:邏輯運算符
邏輯運算符的操作數都是bool類型或者可以隱式轉換成bool類型的類型,返回值都是bool類型
In [30]: True and False # 雙方都必須爲真
Out[30]: False
In [31]: True or False # 需要一方爲真就返回True
Out[31]: True
例11:邏輯運算符經常用作短路操作; 短路操作基本不會用到not
In [32]: def true():
...: print('true')
...: return True
...: def false():
...: print('false')
...: return False
...:
# or當第一個爲真後面的就不執行了, 如果第一個爲False則會繼續執行後面的,如果都執行失敗,則返回Flase, 但只要一個成功就返回True
In [29]: true() or false()
true
Out[29]: True
In [30]: false() or true()
false
true
Out[30]: True
In [34]: true() and true() # and指定前面爲true然後繼續執行後面的, 如果都爲true, 就返回true
true
true
Out[34]: True
In [36]: true() and false() # and先執行第一個函數返回爲true,繼續執行第二個函數, 如果第二個函數爲false就返回false
true
false
Out[36]: False
In [37]: false() and true()
false
Out[37]: False
該例子可以拆分兩個部分:
1、是否執行了
2、返回的結果
短路操作:從左到右執行, 當已經有結果的時候, 將停止計算, 提前返回
也就是說, 當判斷式已經確定時, 不再繼續處理後續表達式。 && 在失敗時中斷, ||在成功時中斷。
例12:邏輯計算
# 0爲false
# 整數都爲true
# None爲false
* 空列表、空元組等都是false
In [32]: bool(0)
Out[32]: False
In [33]: bool(2)
Out[33]: True
In [35]: bool(None)
Out[35]: False
In [38]: 0 and 1
Out[38]: 0
In [39]: 0 and True
Out[39]: 0
In [40]: None and True
In [41]: True and None
In [42]: 1 and True
Out[42]: True
成員運算符
和集合類型相關,在集合類型時會介紹
身份運算符
和麪向對象相關,在面向對象時會介紹
位運算符
- <<:左移
- >>:右移
- &:按位與
- |:按位或
- ^:按位取反
一般用在網絡底層開發中,用的非常少
位運算符是直接操作二進制的
運算符優先級(當運算符在一起運算時)
- 乘法運算比取模運算優先級要高
- 算術運算 > 比較運算 > 邏輯運算
- 可以通過括號改變優先級,所以一般不確定的要其優先級高則
直接用括號
- 可以通過括號改變優先級,所以一般不確定的要其優先級高則
- 拿不準或者表達式比較複雜的適合,直接使用括號來決定優先級
例13:運算符的優先級
In [43]: 3 + 1 * 4
Out[43]: 7
In [44]: 3 * 4 ** 2
Out[44]: 48
In [45]: 3 * 4 % 3 # 乘法運算比取模運算優先級要高
Out[45]: 0
In [50]: 3 - 4 % 2
Out[50]: 3
例14:比較運算與邏輯運算
In [51]: 3 > 5 and 5 > 3
Out[51]: False
In [52]: 3 + 6 > 7
Out[52]: True
算術運算 > 比較運算 > 邏輯運算
可以通過括號改變優先級
賦值運算符(比較特殊)
上述運算符都會返回結果,而賦值運算符是不會返回結果的
**參考如下實例,一句話概括賦值運算符
:把右邊計算的結果賦值給左邊
賦值運算符是可以和算數運算符一起使用的
例15:賦值運算,把右邊的值賦給左邊,如果右邊是個表達式,它會進行計算
In [53]: i = 3 + 58
In [54]: i
Out[54]: 61
In [55]: i /= 5
In [56]: i
Out[56]: 12.2
例16:賦值運算符和算數運算符一起使用
In [36]: i = 8
In [37]: i += 3
In [39]: i
Out[39]: 11