Python教程(2.3)——運算符和類型轉換


Python里有很多運算符(operator),這節就讓我們來詳細學一學。

 

注意:本文沒有特別說明的地方,只考慮bool、int、float三種類型。例如“兩邊操作數類型相同時,得到的結果為操作數類型”這句話只需要考慮上述三種類型就可以了。

 

算術運算符

 

加運算符(plus,+)

 

+運算符將兩個數相加。例如1+2等於3,1.23+4.56等於5.79。

 

+運算符用於一個數前時等於它本身。例如+(-2)等於-2,+2等於2。

 

減運算符(minus,-)

 

-運算符將兩個數相減。例如4-1等於3,1.23-4.56等於-3.33。

 

-運算符也可以計算一個數的相反數。例如-(-7)等於7。

 

乘運算符(multiply ... by ...,*)

 

*運算符將兩個數相乘。例如12*7等於84,4.5*0.9等於4.05。

 

除運算符(divided by,/)

 

/運算符將兩個數相除。例如16/4等於4.0,4/3等於1.33333...。注意/得到的一定是float類型。如果除數為0,會產生ZeroDivisionError。

 

地板除運算符(floor division,//)

 

//運算符將兩個數相除,得到答案的整數部分。例如4//3等於1,4.0//3.0等於1.0。如果除數為0,會產生ZeroDivisionError。

 

取余運算符(modulo,%)

 

%運算符求兩個數相除的余數,也叫。例如4%3等於1,4.0%3.0等於1.0。如果除數為0,會產生ZeroDivisionError。

 

乘方運算符(power,**)

 

**運算符用來計算乘方。a ** b得到a的b次方。例如,2 ** 7等於128,4 ** -2等於0.0625。

 

在除了/以外的運算符中,兩邊操作數類型相同時,得到的結果為操作數類型;對於/運算符,得到的結果一定為float類型。

 

比較運算符

 

大於運算符(greater than,>)

 

大於運算符用來判斷一個數是否大於另一個數。結果為bool,如果大於返回True,否則返回False。例如1>0為True,1>2為False。

 

小於運算符(lesser than,<)

 

小於運算符用來判斷一個數是否小於另一個數。結果為bool,如果小於返回True,否則返回False。例如0<1為True,1<0為False。

 

等於運算符(equal to,==)

 

等於運算符用來判斷一個數是否等於另一個數。結果為bool,如果等於返回True,否則返回False。例如1+1==2為True,1+1==3為False。

 

注意區分==和=,后者是賦值號。a = b表示將b賦給a,a == b表示a與b是否相等。請勿混淆。

 

不等於運算符(not equal to,!=)

 

不等於運算符用來判斷一個數是否不等於另一個數。結果為bool,如果不等於返回True,否則返回False。例如1+1!=3為True,1+1!=2為False。

 

大於等於運算符(greater than or equal to,>=)

 

大於等於運算符用來判斷一個數是否大於或等於另一個數。結果為bool,如果大於或等於返回True,否則返回False。例如1>=1為True,0>=1為False。

 

小於等於運算符(lesser than or equal to,<=)

 

小於等於運算符用來判斷一個數是否小於或等於另一個數。結果為bool,如果小於或等於返回True,否則返回False。例如1<=1為True,1<=0為False。

 

邏輯運算符

 

and運算符

 

and運算符(一般)用於兩個布爾值之間,如果兩邊都為True,則返回True,否則返回False。例如True and True、1 > 0 and 1 > -1為True,True and False、False and False、1 == 0 and 1 > 0為False。

 

and也可以用於其它類型,以后會有更深入的介紹。

 

or運算符

 

or運算符(一般)用於兩個布爾值之間,如果兩邊有任意一個為True,則返回True,否則返回False。例如1 > 0 or 1 > 1、True or True、True or False為True,1 == 2 or 1 == 3為False。

 

or也可以用於其它類型,以后會有更深入的介紹。

 

not運算符

 

not運算符(一般)用於一個布爾值之前,如果該值為True,則返回False,否則返回True。例如not True等於False,not 1 == 0為True。

 

not也可以用於其它類型,以后會有更深入的介紹。

 

賦值運算符

 

=運算符

 

=運算符將右邊的值賦給左邊的變量。例如:

 

>>> a = 0
>>> a
0
>>> a = 10
>>> a
10
>>> a = True
>>> a
True

 

+=運算符

 

+=運算符將左邊的變量加上右邊的值。a += b是a = a + b的縮略形式。

 

-=運算符

 

-=運算符將左邊的變量減去右邊的值。a -= b是a = a - b的縮略形式。

 

*=運算符

 

*=運算符將左邊的變量乘以右邊的值。a *= b是a = a * b的縮略形式。

 

/=運算符

 

/=運算符將左邊的變量除以右邊的值。a /= b是a = a / b的縮略形式。

 

//=運算符

 

//=運算符將左邊的變量地板除右邊的值。a //= b是a = a // b的縮略形式。

 

%=運算符

 

%=運算符將左邊的變量模右邊的值。a %= b是a = a % b的縮略形式。

 

**=運算符

 

**=運算符計算左邊變量的右邊次方(聽起來很奇怪)並賦給左邊變量。a **= b是a = a ** b的縮略形式。

 

類型轉換

 

轉換規則

 

bool->int

 

True為1,False為0。

 

bool->float

 

True為1.0,False為0.0。

 

int->bool

 

不為0轉換為True,為0轉換為False。

 

int->float

 

值不變,但是類型改變。例如1變成1.0,4變成4.0。

 

float->bool

 

不為0.0轉換為True,為0.0轉換為False。

 

float->int

 

向0取整。如果值為整數(例如1.0、2.0),不變;如果值為整數,取小於該數的最大整數;如果值為小數,取大於該數的最小整數。整數例如1.5->1,-1.5->-1。

 

其實還有更多的轉換規則,更多的以后再討論。

 

隱式類型轉換(implicit type cast)

 

當一個有兩個操作數的運算符兩邊操作數類型不同時,就會出現隱式類型轉換。限於目前讀者的Python水平,只講關於+、-、*、/、//、%、**這7個運算符的類型轉換。

 

在Python中,類型的級別是不同的,從低到高依次是bool、int、float(這不代表沒有其它類型,還記得嗎,文章前面說只考慮這三種類型)。

 

兩邊都是bool的情況

 

將兩邊的操作數都轉成int類型。對於除/以外的運算符,結果為int類型。對於/運算符,結果為float類型。

 

其它情況

 

將擁有低級類型的操作數轉換成高級類型。對於除/以外的運算符,結果為高級類型。對於/運算符,結果為float類型。

 

例如:

 

>>> True + False
1
>>> True - 2
-1
>>> 1.5 - True
0.5
>>> 1.2 * 7
8.4
>>> 1.7 - 4
-2.3

 

顯式類型轉換(explicit type cast)

 

上面說的是隱式類型轉換,Python也允許顯式類型轉換。顯式類型轉換指用戶明確指出要進行類型轉換。

 

顯式類型轉換的格式為type(value),type為目標類型,value為要轉換的值。例如int(2.5)表示將2.5轉換成int類型,即2;float(2)表示將2轉換成float類型,即2.0。

 

注意,對於變量,使用顯式類型轉換並不會改變其類型:

 

>>> a = 10.5
>>> int(a)
10
>>> a
10.5

 

雖然中間輸出了a轉換成int之后的值,但這只是個零時的值,不會改變a的類型。只有賦值才可以改變:

 

>>> a = int(a)
>>> a
10

 

注意

 

有個地方要注意:在類型轉換中,只會暫時轉換變量的值的類型,不會改變變量類型!只有修改變量值才會出現類型上的變化。例如:

 

>>> a = 10
>>> a + 10.0        # a is still int!
20.0
>>> a += 10.0      # a is float!
>>> a
20.0

 

ToDo

 

以后會補充優先級概念。如果不在cnblogs上發現本文,請訪問http://www.cnblogs.com/collectionne/p/6853051.html查看完整文章(也可能還沒補充)。

 

小結

 

1. Python的算術運算符有+、-、*、/、//、%、**。

2. Python的比較運算符有==、>、<、>=、<=。

3. Python的邏輯運算符有and、or、not。

4. Python的賦值運算符有+=、-=、*=、/=、//=、%=、**=。

5. 接受兩個操作數的運算符的操作數類型不一致時,會有隱式類型轉換。

6. 顯式類型轉換格式:type(value)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM