python中的运算符_Python中的运算符
說(shuō)完常用的數(shù)據(jù)類(lèi)型,再來(lái)說(shuō)下運(yùn)算符。運(yùn)算符用于將各種類(lèi)型的數(shù)據(jù)進(jìn)行運(yùn)算,讓靜態(tài)的數(shù)據(jù)跑起來(lái)。
編程語(yǔ)言中的運(yùn)算大致分為以下幾個(gè)大類(lèi):
算術(shù)運(yùn)算, 用于加減乘除等數(shù)學(xué)運(yùn)算
賦值運(yùn)算,用于接收運(yùn)算符或方法調(diào)用返回的結(jié)果
比較運(yùn)算, 用于做大小或等值比較運(yùn)算
邏輯運(yùn)算,用于做 與、或、非運(yùn)算
位運(yùn)算, 用于二進(jìn)制運(yùn)算
每種運(yùn)算中所包含的符號(hào)稱(chēng)為相應(yīng)的運(yùn)算符,如 算術(shù)運(yùn)算符、比較運(yùn)算符等。
一、算術(shù)運(yùn)算
運(yùn)算(符)
說(shuō)明
實(shí)例
+
兩個(gè)對(duì)象相加
2 + 3 結(jié)果為 5
-
兩個(gè)對(duì)象相減
3 - 2 結(jié)果為 1
*
兩個(gè)數(shù)相乘或返回一個(gè)重復(fù)若干次的序列
2 * 3 結(jié)果為 6; 'abc' * 2 結(jié)果為 'abcabc'
/
兩個(gè)數(shù)相除
3 / 2 結(jié)果為 1.5
//
整除,返回商的整數(shù)部分
3 // 2 結(jié)果為 1,3 // 2.0 結(jié)果為 1.0
%
求余/取模,返回除法的余數(shù)
3 % 2 結(jié)果為 1,3 % 2.0 結(jié)果為 1.0
**
求冪/次方
2 ** 3 結(jié)果為 8
二、賦值運(yùn)算
運(yùn)算(符)
描述
實(shí)例
=
簡(jiǎn)單賦值運(yùn)算符
a = 5, b = 3, c = a - b
+=
加法賦值運(yùn)算符
a += b 相當(dāng)于 a = a + b
-=
減法賦值運(yùn)算符
a -= b 相當(dāng)于 a = a -b
*=
乘法賦值運(yùn)算符
a *= b 相當(dāng)于 a = a * b
/=
除法賦值運(yùn)算符
a /= b 相當(dāng)于 a = a / b
//=
取整除賦值運(yùn)算符
a //= b 相當(dāng)于 a = a // b
%=
取模賦值運(yùn)算符
a %= b 相當(dāng)于 a = a % b
**=
冪賦值運(yùn)算符符
a **= b 相當(dāng)于 a = a ** b
三、比較運(yùn)算
Python有8中比較操作,它們具有相同的優(yōu)先級(jí)。比較操作可以被任意連接,比如 x< y <= z 等同于 x < y and y <= z,只是第一種形式下的y只被評(píng)估一次。另外,當(dāng) x < y不成立時(shí),這兩種形式下的z都不會(huì)被評(píng)估。
運(yùn)算(符)
說(shuō)明
實(shí)例
<
嚴(yán)格小于
3 < 5 結(jié)果為T(mén)rue,5 < 5 結(jié)果為False
<=
小于或等于
3 <= 5 結(jié)果為T(mén)rue,5 <= 5 結(jié)果為T(mén)rue
>
嚴(yán)格大于
5 > 3 結(jié)果為T(mén)rue,5 > 5 結(jié)果為False
>=
大于或等于
5 >= 3 結(jié)果為T(mén)rue,5 >= 5 結(jié)果為T(mén)rue
==
等于
1 == 1.0 == True 結(jié)果為T(mén)rue
!=
不等于
is
判斷兩個(gè)標(biāo)識(shí)符是否引用自一個(gè)對(duì)象
x is y, 如果id(x) == id(y),即x也y的指向同一個(gè)內(nèi)存地址,則結(jié)果為1,否則結(jié)果為0
is not
判斷兩個(gè)標(biāo)識(shí)符是否引用自不同對(duì)象
x is not y, 如果id(x) != id(y),即x和y指向不同的內(nèi)存地址,則結(jié)果為1,否則結(jié)果為0
說(shuō)明:
a) 不同類(lèi)型的對(duì)象進(jìn)行比較,從來(lái)不會(huì)相等(不同的數(shù)字類(lèi)型除外);
b) 當(dāng)把<、<=、> 和 >=操作符在這幾種情況下會(huì)拋出TypeError異常: (1) 用于復(fù)數(shù)和另外的內(nèi)置數(shù)字類(lèi)型進(jìn)行比較時(shí);(2) 比較的對(duì)象為不同類(lèi)型,無(wú)法進(jìn)行比較時(shí);(3) 未定義的其他情況下;
c) 一個(gè)類(lèi)的不同實(shí)例通常是不相等的,除非該類(lèi)定義了__eq__()方法;
d) 一個(gè)類(lèi)的實(shí)例不能相對(duì)于同一類(lèi)或其他類(lèi)的的其他實(shí)例進(jìn)行排序,除非該類(lèi)定義了足夠的方法__lt__(), __le__(), __gt__(), __ge__()。如果想要比較運(yùn)算符的常規(guī)含義, __lt__()和__eq__()就足夠了;
e) is 和 is not操作符的行為是不能自定義的;另外,它們可以被應(yīng)用到兩個(gè)不同類(lèi)型的對(duì)象,不會(huì)已發(fā)異常。
f) 另外兩個(gè)具有相同句法優(yōu)先級(jí)的操作是 in 和 not in,它們支持序列、集合和映射類(lèi)型的對(duì)象。
g) 比較運(yùn)算的結(jié)果為布爾值:True 或 False
四、邏輯運(yùn)算
“真”值測(cè)試(Truth Value Testing)
在講解“布爾運(yùn)算”之前,我們先來(lái)說(shuō)下Python中的一個(gè)特殊操作--“真”值測(cè)試。
Python中的任何一個(gè)對(duì)象都可以被測(cè)試“真”值。這里說(shuō)的“真”值測(cè)試可以這樣理解:Python中的任何一個(gè)對(duì)象都可以轉(zhuǎn)換為一個(gè)布爾值,而這個(gè)“真”值測(cè)試就是獲取一個(gè)對(duì)象對(duì)應(yīng)的布爾值的過(guò)程。
Python中只有下面這些值對(duì)應(yīng)的布爾值為False:
None
False
數(shù)字類(lèi)型中的0,如:0, 0.0, 0j
任意空序列,如:'', (), []
任意一個(gè)空映射,如:{}
一個(gè)用戶(hù)自定義類(lèi)的實(shí)例--該用戶(hù)自定義類(lèi)中定義了一個(gè)__bool__()或__len__()方法,且實(shí)例調(diào)用該方法時(shí)返回整數(shù)0或布爾值False
除此之外,所有的其它值對(duì)應(yīng)的布爾值都是True, 因此許多類(lèi)型的對(duì)象永遠(yuǎn)是True。
"真"值測(cè)試可以被用在 if或while條件中,也可以作為布爾操作的操作數(shù)。
布爾運(yùn)算(Boolean Operations)
Python中的邏輯運(yùn)算稱(chēng)為“布爾運(yùn)算(Boolean Operations)”,操作符包括:and(與)、or(或)、not(非)。
下面按照他們的優(yōu)先級(jí)升序順序進(jìn)行說(shuō)明:
運(yùn)算
結(jié)果
x or y
如果x的Truth值測(cè)試結(jié)果為False,那么該操作的結(jié)果為y的值,否則為x的值
x and y
如果x的Truth值測(cè)試結(jié)果為False, 那么該操作的結(jié)果為x的值,否則為y的值
not x
如果x的Truth值測(cè)試結(jié)果為False, 那么該操作的結(jié)果為T(mén)rue,否則結(jié)果為False
說(shuō)明:
a)or是一個(gè)短路操作符,也就是說(shuō),只有第一個(gè)參數(shù)的評(píng)估結(jié)果為False時(shí),第二個(gè)參數(shù)才會(huì)被評(píng)估;
b) and也是一個(gè)短路操作符,也就是說(shuō),只有第一個(gè)參數(shù)的評(píng)估結(jié)果為T(mén)rue時(shí),第二個(gè)參數(shù)才會(huì)被評(píng)估;
c) not操作符比非布爾操作符優(yōu)先級(jí)低,因此,not a == b 被解釋為 not (a == b);如果寫(xiě)成 a == not b會(huì)包語(yǔ)法錯(cuò)誤。
五、位運(yùn)算
按位運(yùn)算是指把數(shù)字轉(zhuǎn)換為二進(jìn)制來(lái)進(jìn)行計(jì)算,位運(yùn)算符包括以下幾種:
假設(shè):
a = 60,對(duì)應(yīng)的二進(jìn)制格式為 0011 1100
b = 13, 對(duì)應(yīng)的二進(jìn)制格式為 0000 1101
運(yùn)算符
說(shuō)明
實(shí)例
&
按位與:參與運(yùn)算的兩個(gè)值,如果相應(yīng)的二進(jìn)制位都為1,則該位結(jié)果為1,否則為0
a & b 對(duì)應(yīng)的二進(jìn)制結(jié)果為 0000 1100,十進(jìn)制為12
豎杠
按位或:參與運(yùn)算的兩個(gè)值,只要對(duì)應(yīng)的二進(jìn)制位由一個(gè)為1時(shí),該位結(jié)果就為1
a 豎杠 b 對(duì)應(yīng)的二進(jìn)制結(jié)果為 0011 1101,十進(jìn)制為61
^
按位異或:參與運(yùn)算的兩個(gè)值,當(dāng)對(duì)應(yīng)的二進(jìn)制位不同時(shí),該為結(jié)果為1,否則改為結(jié)果為0
a ^ b 對(duì)應(yīng)的二進(jìn)制結(jié)果為 0011 0001, 十進(jìn)制為49
~
按位取反:這個(gè)是單目運(yùn)算符,只有一個(gè)值參與運(yùn)算,運(yùn)算過(guò)程是對(duì)每個(gè)二進(jìn)制位取反,即把1變0,把0變1
~a 的二進(jìn)制結(jié)果為 1100 0011,十進(jìn)制數(shù)為-61
<<
左移運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)制位全部左移若干位,高位丟棄,低位補(bǔ)0,結(jié)果相當(dāng)于運(yùn)算數(shù)乘以2的n次方,正負(fù)符號(hào)不發(fā)生改變
a << 2 的二進(jìn)制結(jié)果為 1111 0000,十進(jìn)制數(shù)為240
>>
右移運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)制位全部右移若干位,結(jié)果相當(dāng)于運(yùn)算數(shù)除以2的n次方,正負(fù)符號(hào)不發(fā)生改變
a >> 2 的二進(jìn)制結(jié)果為 0000 1111,十進(jìn)制為15
總結(jié)
以上是生活随笔為你收集整理的python中的运算符_Python中的运算符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Redis数据库的连接
- 下一篇: import lombok 报错_Lom