1.1 概述
python
語言支持以下的運算符:
- 算數(shù)運算符
- 比較運算符
- 賦值運算符
- 邏輯(關(guān)系)運算符
- 位運算符
- 成員運算符
- 身份運算符
- 運算符的優(yōu)先級
1.2 Python
算術(shù)運算符
假設(shè)變量a為10仔夺,變量b為21:
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 - 兩個對象相加 | a + b 輸出結(jié)果 31 |
- | 減 - 得到負(fù)數(shù)或是一個數(shù)減去另一個數(shù) | a - b 輸出結(jié)果 -11 |
* | 乘 - 兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串 | a * b 輸出結(jié)果 210 |
/ | 除 - x 除以 y | b / a 輸出結(jié)果 2.1 |
% | 取模 - 返回除法的余數(shù) | b % a 輸出結(jié)果 1 |
** | 冪(乘方) - 返回x的y次冪 | a**b 為10的21次方 |
// | 取整除 - 向下取接近除數(shù)的整數(shù) | >>> 9//2 4 >>> -9//2 -5 |
說明:
優(yōu)先級: 冪(乘方) > 乘、除、整除、取余 > 加晰骑、減严卖; 可以使用括號改變運算順序
結(jié)合順序(對優(yōu)先級相同的): 從左到右;
整數(shù)除整數(shù),運算結(jié)果為小數(shù)
-
對于整除運算靶端, 它是向下圓整結(jié)果建钥。因此在結(jié)果為負(fù)數(shù)的情況下藤韵, 圓整后將離
0
更遠(yuǎn)。# 10/(-3) = -3 ... 1 # -10/ 3 = -3 ... -1 10 // -3 # -4 -10 // 3 # -4 -10 // -3 # 3 10 % -3 # -2 - 10 % 3 # 2 - 10 % -3 # -1
- 取整的情況下: 向下圓整锦针, 因此在結(jié)果為負(fù)數(shù)的情況下, 圓整后將離
0
更遠(yuǎn)置蜀; - 取余的情況下奈搜, 其符號由被除數(shù)決定的, 其結(jié)果是 該值減去由取整的結(jié)果乘以被除數(shù)的結(jié)果盯荤;
- 取整的情況下: 向下圓整锦针, 因此在結(jié)果為負(fù)數(shù)的情況下, 圓整后將離
1.3 比較運算符
? 比較運算: 是發(fā)生在兩個同類型數(shù)據(jù)間的一種操作馋吗,比較運算是使用固定的比對規(guī)則對兩個數(shù)據(jù)進行比對,如果比較運算式子成立得到結(jié)果True,如果不成立秋秤,得到結(jié)果False
· 假設(shè)變量a為10宏粤,變量b為20:
運算符 | 描述 | 實例 |
---|---|---|
== | 等于 - 比較對象是否相等 | (a == b) 返回 False脚翘。 |
!= | 不等于 - 比較兩個對象是否不相等 | (a != b) 返回 True。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False绍哎。 |
< | 小于 - 返回x是否小于y来农。所有比較運算符返回1表示真,返回0表示假崇堰。這分別與特殊的變量True和False等價沃于。注意,這些變量名的大寫海诲。 | (a < b) 返回 True繁莹。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False特幔。 |
<= | 小于等于 - 返回x是否小于等于y咨演。 | (a <= b) 返回 True。 |
總結(jié): 只要包含比較運算符的表達(dá)式蚯斯, 結(jié)果一定是
bool
類型薄风;字符串進行比較規(guī)則:
0..數(shù)字..9 < A..大寫字母..Z < a..小寫字母..z
字符串比較運算規(guī)則
? 1.對兩個字符串中對應(yīng)位置每個字符逐一比對
? 2.排序較小的整體字符串值小
? 3.如果比較結(jié)果相等,比較下一個字母
? 4.直到比對到最后一個字母
? 5.若比對的一方?jīng)]有字符溉跃,則整體字符串值小-
對象的比較
==
與is
is 用于判斷兩個變量引用對象是否為同一個(即村刨, id()獲取的內(nèi)存地址是否相同), == 用于判斷引用變量的值是否相等撰茎。
1.4 賦值運算符
? 假設(shè)變量a為10智嚷,變量b為20:
運算符 | 描述 | 實例 |
---|---|---|
= | 簡單的賦值運算符 | c = a + b 將 a + b 的運算結(jié)果賦值為 c |
+= | 加法賦值運算符 | c += a 等效于 c = c + a |
-= | 減法賦值運算符 | c -= a 等效于 c = c - a |
*= | 乘法賦值運算符 | c *= a 等效于 c = c * a |
/= | 除法賦值運算符 | c /= a 等效于 c = c / a |
%= | 取模賦值運算符 | c %= a 等效于 c = c % a |
**= | 冪賦值運算符 | c **= a 等效于 c = c ** a |
//= | 取整除賦值運算符 | c //= a 等效于 c = c // a |
說明:
- 賦值運算的左側(cè)只能是變量,右側(cè)可以是變量辕棚,也可以是數(shù)字
1.5 邏輯(關(guān)系)運算符
? 關(guān)系運算是發(fā)生在兩個布爾型數(shù)據(jù)間的一種操作由驹,關(guān)系運算是根據(jù)固定規(guī)則對兩個布爾值進行運算,最終結(jié)果是布爾值炫惩。
假設(shè)變量 a 為 10, b為 20:
運算符 | 邏輯表達(dá)式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" - 如果 x 為 False僻弹,x and y 返回 False,否則它返回 y 的計算值他嚷。 | (a and b) 返回 20蹋绽。 |
or | x or y | 布爾"或" - 如果 x 是 True,它返回 x 的值筋蓖,否則它返回 y 的計算值卸耘。 | (a or b) 返回 10。 |
not | not x | 布爾"非" - 如果 x 為 True粘咖,返回 False 蚣抗。如果 x 為 False,它返回 True瓮下。 | not(a and b) 返回 False |
說明:
與其它語言區(qū)別:
c/javascript
: && 翰铡、|| 钝域、 !-
運算法則:
- 邏輯與(and):同真則真
- 邏輯或(or):同假則假
- 邏輯非(not):非真即假,非假即真
短路特性: 如果一個條件 可以決定整個式子的結(jié)果, 那么代碼終止锭魔, 拿這個條件當(dāng)結(jié)果例证;
-
數(shù)字可以作為關(guān)系運算的數(shù)據(jù)進行運算,0表示False,非0表示True
print(2 and 0) # 0 print(2 and 3) # 3 print(0 and 3) # 0 # 任意操作數(shù)可以決定整個式子值的赂毯,最終結(jié)果即為該操作數(shù)(參看真值表) >>> True and 0 #→ 0 >>> 0 and True #→ 0 >>> 4 or False #→ 4 >>> False or 4 #→ 4 # 如果兩個操作數(shù)都無法單獨決定整個式子值的(參看真值表)战虏,最終結(jié)果即為后面的操作數(shù) >>> True and 10 #→ 10 >>> 10 and True #→ True >>> False or 0 #→ 0 >>> 0 or False #→ False
1.6 位運算符
運算符 | 描述 | 實例 |
---|---|---|
& | 按位與運算符:參與運算的兩個值,如果兩個相應(yīng)位都為1,則該位的結(jié)果為1,否則為0 | (a & b) 輸出結(jié)果 12 ,二進制解釋: 0000 1100 |
| | 按位或運算符:只要對應(yīng)的二個二進位有一個為1時党涕,結(jié)果位就為1烦感。 | (a | b) 輸出結(jié)果 61 ,二進制解釋: 0011 1101 |
^ | 按位異或運算符:當(dāng)兩對應(yīng)的二進位相異時膛堤,結(jié)果為1 | (a ^ b) 輸出結(jié)果 49 手趣,二進制解釋: 0011 0001 |
~ | 按位取反運算符:對數(shù)據(jù)的每個二進制位取反,即把1變?yōu)?,把0變?yōu)?。~x 類似于 -x-1 | (~a ) 輸出結(jié)果 -61 肥荔,二進制解釋: 1100 0011绿渣, 在一個有符號二進制數(shù)的補碼形式。 |
<< | 左移動運算符:運算數(shù)的各二進位全部左移若干位燕耿,由"<<"右邊的數(shù)指定移動的位數(shù)中符,高位丟棄,低位補0誉帅。 | a << 2 輸出結(jié)果 240 淀散,二進制解釋: 1111 0000 |
>> | 右移動運算符:把">>"左邊的運算數(shù)的各二進位全部右移若干位,">>"右邊的數(shù)指定移動的位數(shù) | a >> 2 輸出結(jié)果 15 蚜锨,二進制解釋: 0000 1111 |
1.7 成員運算符
運算符 | 描述 | 實例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True档插,否則返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True亚再。 |
not in | 如果在指定的序列中沒有找到值返回 True郭膛,否則返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True氛悬。 |
1.8 身份運算符
運算符 | 描述 | 實例 |
---|---|---|
is | is 是判斷兩個標(biāo)識符是不是引用自一個對象 | x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True则剃,否則返回 False |
is not | is not 是判斷兩個標(biāo)識符是不是引用自不同對象 | x is not y , 類似 id(a) != id(b)如捅。如果引用的不是同一個對象則返回結(jié)果 True棍现,否則返回 False。 |
注: id() 函數(shù)用于獲取對象內(nèi)存地址伪朽。
1.9 運算符優(yōu)先級
從最高到最低優(yōu)先級的所有運算符:
運算符 | 描述 |
---|---|
** | 指數(shù) (最高優(yōu)先級) |
~ + - | 按位翻轉(zhuǎn), 一元加號和減號 |
* / % // | 乘轴咱,除汛蝙,取模和取整除 |
+ - | 加法減法 |
>> << | 右移烈涮,左移運算符 |
& | 位 'AND' |
^ | | 位運算符 |
<= 朴肺、<、 >坚洽、 >= | 比較運算符 |
==戈稿、 != | 等于運算符 |
=、 %=讶舰、 /=鞍盗、 //=、 -=跳昼、 +=般甲、 *=、 **= | 賦值運算符 |
is is not | 身份運算符 |
in not in | 成員運算符 |
and or not | 邏輯運算符 |
已同步至我的CSDN博客,歡迎關(guān)注鹅颊!
同時也開通了我個人網(wǎng)站http://www.kendny.cn, 歡迎訪問敷存!