Python中的運算符相比較於傳統的C/C++差異不是很大,主要是一些個別的運算符上的差異。包括:算術、比較、賦值、位、邏輯、成員、身份等。
它們的優先級:緩存
符號 | 說明 |
** | 指數(最高優先級) |
~,+,- | 按位翻轉,一元加號和減號(最後兩個的方法名爲+@ 和 -@,例如:+5,-5 正5,負5) |
*,/,%,// | 乘,除,取模和取整數 |
+,- | 二元加號和減號 |
>>,<< | 右移,左移運算符 |
& | 按位與 |
|,^ | 按位或,按位異或 |
<=,>=,==,!= | 比較運算符 |
=,%=,/=,//=,-=,+=,*=,**= | 賦值運算符 |
is,is not | 身份運算符 |
in,not in | 成員運算符 |
not,or,and | 邏輯運算符 |
a = 10 print(a ** 2)#100 print(~a)#a的二進制源碼00001010,取反後11110101,(是負數用補碼,反碼10001010,補碼10001011) print(+a)#5 print(-a)#-5 print(a>>1)#5 print(a<<1)#10 print(a&2)#2 print(a^1)#11 print(a|3)#9 print(a!=6)#True print(a/3)#3.333 print(a//3)#3 print(a%3)#1 print(a>6 and a<12)#True print(not a)#False
注意:Python中是沒有一元遞減符(--),一元遞加符(++),邏輯運算符(&&,||)的。spa
a = 3 list = [1,2,3,4,5] if (a in list): print("a 在給定的list 列表中"); else if(a not in list): print("a 不在給定的list列表中"); else: print("不可能出現");
Python語言中的變量一般有3個屬性,分別是name,id和value,其中的name爲變量名,id與內存地址聯合,value變量的值。
== 和 is 均可以用來比較兩個對象,可是==比較是對象的值(value),is比較的是對象的地址(id)。例如:code
a = [1,2,3] b = [1,2,3] print("a的id是",id(a));#a的id是140509619346760 print("b的id是",id(b));#b的id是140509748600456 print(a == b)#True print(a is b)#False
其中==運算符比較的是變量的value,is運算符比較的是變量的id。a和b變量的值是同樣的,因此a==b爲True;a和b變量的id是不同的,因此a is b 爲False。
可是並非全部狀況都是這樣,對於小整數,Python緩存了-5~256之間的全部整數,共262個,所以[-5,256]的每一個整數只有惟一的一個地址。例如:對象
a = 200 b = 200 #變量b和變量a 具備相同的地址 print(a == b)#True print(a is b)#True