轉(zhuǎn)載請(qǐng)注明出處:http://www.reibang.com/p/4564876be7ee
本文出自Shawpoo的簡(jiǎn)書
我的博客:CSDN博客
【Python學(xué)習(xí)筆記專欄】:http://blog.csdn.net/column/details/17658.html
Python中的運(yùn)算符
Python3支持以下幾種類型的運(yùn)算符:
- 1临扮、算術(shù)運(yùn)算符
- 2、比較(關(guān)系)運(yùn)算符
- 3教翩、賦值運(yùn)算符
- 4杆勇、邏輯運(yùn)算符
- 5、位運(yùn)算符
- 6饱亿、成員運(yùn)算符
- 7蚜退、身份運(yùn)算符
一闰靴、運(yùn)算符的分類
1、算術(shù)運(yùn)算符
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
+ | 加 - 兩個(gè)對(duì)象相加 | 10 + 22 輸出結(jié)果:32 |
- | 減 - 得到相反數(shù)或兩個(gè)數(shù)相減 | 23 - 19 輸出結(jié)果:4 -(5) 輸出結(jié)果: -5 |
* | 乘 - 兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的對(duì)象 | 3 * 4 輸出結(jié)果:12 "abc" * 3 輸出結(jié)果:abcabcabc [1, 2, 3] * 3 輸出結(jié)果:[1, 2, 3, 1, 2, 3, 1, 2, 3] |
/ | 除 - 兩個(gè)數(shù)相除 | 9 / 3 輸出結(jié)果:3 5 / 2 輸出結(jié)果:2.5 |
% | 取模 - 返回除法的余數(shù) | 8 % 3 輸出結(jié)果:2 1 % 2 輸出結(jié)果:1 |
** | 冪 - xy表示輸出x的y次冪} | 2 ** 3 輸出結(jié)果:8 2 ** -2 輸出結(jié)果:0.25 |
// | 取整除 - 返回商的整數(shù)部分 | 10 // 3 輸出結(jié)果:3 9.0 // 2.0 輸出結(jié)果:4.0 |
2钻注、比較(關(guān)系)運(yùn)算符
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
== | 等于 - 比較對(duì)象是否相等 | 10 == 20 輸出結(jié)果 :False [1, 2, 3] == [1, 2, 3] 輸出結(jié)果:True |
!= | 不等于 - 比較兩個(gè)對(duì)象是否不相等 | "abc" != "abc" 輸出結(jié)果:False [1, 2, 3] != [1, 3, 2] 輸出結(jié)果:True |
> | 大于 - 返回x是否大于y | 5 > 8 輸出結(jié)果:False |
< | 小于 - 返回x是否小于y | 4 < 9 輸出結(jié)果:True |
>= | 大于等于 - 返回x是否大于等于y | 5 >= 3 輸出結(jié)果:True |
<= | 小于等于 - 返回x是否小于等于y | 7 <= 4 輸出結(jié)果:False |
ps:所有比較運(yùn)算符返回1表示真蚂且,返回0表示假。這分別與特殊的變量True和False等價(jià)幅恋。注意杏死,這些變量名的大寫。
例如:
>>> (10 > 5) == 1
True
>>> type(3 >= 5)
<class 'bool'>
3捆交、賦值運(yùn)算符
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
= | 簡(jiǎn)單的賦值運(yùn)算符 | c = a + b 將 a + b 的運(yùn)算結(jié)果賦值為 c |
+= | 加法賦值運(yùn)算符 | c += a 等效于 c = c + a |
-= | 減法賦值運(yùn)算符 | c -= a 等效于 c = c - a |
*= | 乘法賦值運(yùn)算符 | c *= a 等效于 c = c * a |
/= | 除法賦值運(yùn)算符 | c /= a 等效于 c = c / a |
%= | 取模賦值運(yùn)算符 | c %= a 等效于 c = c % a |
**= | 冪賦值運(yùn)算符 | c **= a 等效于 c = c ** a |
//= | 取整除賦值運(yùn)算符 | c //= a 等效于 c = c // a |
4淑翼、邏輯運(yùn)算符
運(yùn)算符 | 邏輯表達(dá)式 | 描述 | 實(shí)例 |
---|---|---|---|
and | x and y | "與" - 如果 x 為 False,x and y 返回 False品追,否則它返回 y 的計(jì)算值 | (10 and 20) 返回 20 |
or | x or y | "或" - 如果 x 是 True玄括,它返回 x 的值,否則它返回 y 的計(jì)算值 | (10 or 20) 返回 10 |
not | not x | "非" - 如果 x 為 True肉瓦,返回 False 遭京。如果 x 為 False,它返回 True | not(10 and 20) 返回 False |
5泞莉、位運(yùn)算符
按位運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計(jì)算的哪雕。
例如,a = 60鲫趁, b = 13热监,所以 a 的二進(jìn)制為:0011 1100, b的為0000 1101饮寞,則:
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
& | 按位與運(yùn)算符:參與運(yùn)算的兩個(gè)值,如果兩個(gè)相應(yīng)位都為1,則該位的結(jié)果為1,否則為0 | (a & b) 輸出結(jié)果 12 ,二進(jìn)制解釋: 0000 1100 |
| | 按位或運(yùn)算符:只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí)列吼,結(jié)果位就為1幽崩。 | (a | b) 輸出結(jié)果 61 ,二進(jìn)制解釋: 0011 1101 |
^ | 按位異或運(yùn)算符:當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí)寞钥,結(jié)果為1 | (a ^ b) 輸出結(jié)果 49 慌申,二進(jìn)制解釋: 0011 0001 |
~ | 按位取反運(yùn)算符:對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)?。~x 類似于 -x-1 | (~a ) 輸出結(jié)果 -61 理郑,二進(jìn)制解釋: 1100 0011蹄溉, 在一個(gè)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼形式。 |
<< | 左移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)位全部左移若干位您炉,由"<<"右邊的數(shù)指定移動(dòng)的位數(shù)柒爵,高位丟棄,低位補(bǔ)0赚爵。 | a << 2 輸出結(jié)果 240 棉胀,二進(jìn)制解釋: 1111 0000 |
>> | 右移動(dòng)運(yùn)算符:把">>"左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位法瑟,">>"右邊的數(shù)指定移動(dòng)的位數(shù) | b >> 2 輸出結(jié)果 3 ,二進(jìn)制解釋: 0000 0011 |
6唁奢、成員運(yùn)算符
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True霎挟,否則返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True麻掸。如:4 in [1, 2 ,3] 輸出結(jié)果:False |
not in | 如果在指定的序列中沒有找到值返回 True酥夭,否則返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True脊奋。如:"a" not in "bcde" 輸出結(jié)果:True |
7熬北、身份運(yùn)算符
Python中的身份運(yùn)算符用于比較兩個(gè)對(duì)象的存儲(chǔ)單元(內(nèi)存地址)。
ps:id()
函數(shù)用于獲取對(duì)象的內(nèi)存地址狂魔。
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
is | is 是判斷兩個(gè)變量是否引用自一個(gè)對(duì)象 | x is y, 類似 id(x) == id(y) , 如果引用的是同一個(gè)對(duì)象則返回 True蒜埋,否則返回 False |
is not | is not 是判斷兩個(gè)變量是否引用自不同的對(duì)象 | x is not y , 類似 id(a) != id(b)最楷。如果引用的不是同一個(gè)對(duì)象則返回結(jié)果 True整份,否則返回 False。 |
拓展:
is 與 == 區(qū)別:
is 用于判斷兩個(gè)變量引用對(duì)象是否為同一個(gè)籽孙, == 用于判斷引用變量的值是否相等烈评。類似于Java中的equal()和==。
例如犯建,兩個(gè)字符串的比較:
a = "abc"
b = "abc"
print(a == b)
print(a is b)
print(id(a))
print(id(b))
執(zhí)行結(jié)果:
True
True
2376173706520
2376173706520
可以看出字符串只要是內(nèi)容(value)相同的話讲冠,那么它們的內(nèi)存地址也一樣。
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2)
print(list1 is list2)
print(id(list1))
print(id(list2))
執(zhí)行結(jié)果:
True
False
2230720328456
2230720327816
關(guān)于更多is和==的區(qū)別适瓦,請(qǐng)參考我的另一篇文章:Python中is和==(is not和!=)的區(qū)別
二竿开、運(yùn)算符的優(yōu)先級(jí)
以下表格列出了從最高到最低優(yōu)先級(jí)的所有運(yùn)算符:
序號(hào) | 運(yùn)算符 | 描述 |
---|---|---|
1 | ** | 指數(shù) (最高優(yōu)先級(jí)) |
2 | ~ + - | 按位翻轉(zhuǎn), 一元加號(hào)和減號(hào) (最后兩個(gè)的方法名為 +@ 和 -@) |
3 | * / % // | 乘,除玻熙,取模和取整除 |
4 | + - | 加法減法 |
5 | >> << | 右移否彩,左移運(yùn)算符 |
6 | & | 位 'and' |
7 | ^ | 位運(yùn)算符 |
8 | <= , < , > ,>= | 比較運(yùn)算符 |
9 | == , != | 等于運(yùn)算符 |
10 | = , %= , /= , //= , -= , += , *= , **= | 賦值運(yùn)算符 |
11 | is , is not | 身份運(yùn)算符 |
12 | in , not in | 成員運(yùn)算符 |
13 | not or and | 邏輯運(yùn)算符 |