电竞比分网-中国电竞赛事及体育赛事平台

分享

操作符及其用途

 lai1989 2018-12-26

你寫的大多數(shù)邏輯行都包含表達式。表達式的一個簡單例子是2 + 3。一個表達式可分為操作符和操作數(shù)兩部分。

操作符的功能是執(zhí)行一項任務;操作符可由一個符號或關(guān)鍵字代表,如+ 。操作符需要數(shù)據(jù)以供執(zhí)行其功能,這些數(shù)據(jù)名為操作數(shù)。在上面的例子中,23是操作數(shù)。

操作符

我們在這里簡單地介紹操作符及其用途:

你可在Python解釋器中交互驗證下面給出的例子。例如,驗證2 + 3,在Python解釋器提示符中輸入:

>>> 2 + 3
5
>>> 3 * 5
15
>>>
操作符及其用途

操作符

名稱

用途

舉例

+

使兩操作數(shù)相加

3 + 5 得到 8. 'a' + 'b' 得到 'ab'.

-

求出前后兩數(shù)之差。若第一個操作數(shù)未寫則默認為0。

-5.2 得道一個負數(shù), 50 - 24得到26。

*

得出兩數(shù)乘積或返回重復若干次的字符串。

2 * 3得到6。'la' * 3得到'lalala'.

**

返回x的y次冪。

3 ** 4得到81  3 * 3 * 3 * 3

/

將x除以y。

4 / 3 得到 1.3333333333333333

//

取整除

返回最大的整數(shù)商。

4 // 3 得到 1。

%

取模

返回余數(shù)。

8% 3 得到2。 -25.5% 2.25得到1.5.

<<

左位移

將操作數(shù)向左移動若干bit位。(數(shù)字在內(nèi)存中以二進制表示)

2 << 2 得到 8 2在二進制中表示為10 。左位移兩bit位后得到1000,十進制中表示為8。

>>

右位移

將操作數(shù)向右移動若干bit位。

11 >> 1得到5, 11二進制下表示為1011,右位移一位后得到101,十進制中表示為5

&

按位與

數(shù)的按位與。

5 & 3 得到 1。

|

按位或

數(shù)的按位或。

5 | 3得到7

^

按位異或

數(shù)的按位異或。

5 ^ 3得到6。

~

按位翻轉(zhuǎn)

x的按位翻轉(zhuǎn)是-(x+1)。

~5得到-6。

<

小于

返回x是否小于y。所有比較運算符返回布爾值TrueFalse。請注意布爾值大小心敏感。

5 < 3得到False,3 < 5得到True.

比較運算符可任意連接,如3 < 5 < 7得到True.

>

大于

返回x是否大于y。

5 > 3 得到True。如果兩個操作符都是數(shù)字,解釋器會將其轉(zhuǎn)換到同一類型后再比較。若否則返回False

<=

小于等于

返回x是否小于等于y。

x = 3; y = 6; x <= y返回True

>=

大于等于

返回x是否大于等于y。

x = 4; y = 3; x >= 3得到True。

==

等于

比較兩操作數(shù)是否相等。

x = 2; y = 2; x == y得到True。

x = 'str'; y = 'stR'; x == y得到False。

x = 'str'; y = 'str'; x == y得到True。

!=

不等于

比較兩操作數(shù)是否不相等。

x = 2; y = 3; x!= y得到True。

not

布爾非

若X為True則返回False,反之亦然。

x = True; not x返回False。

and

布爾與

無論y值為何,若X為Falsex and y 返回False。

x = False; y = True; x and y由于x為False返回False。此例中Python因為已知and左值為False而不會計算整個布爾表達式,這是短路求值法。

or

布爾或

若x為True則返回True,否則返回y的布爾值。

x = True; y = False; x or y返回True。布爾或同樣使用短路求值。

數(shù)學運算與賦值捷徑

對一個變量進行運算后再賦值給其自身是常見的,因此對于此類表達式有對應捷徑:

你可將:

a = 2; a = a * 3

寫成:

a = 2; a *= 3

注意:變量 = 變量 操作符 表達式變?yōu)榱?TT style="PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-RIGHT: 0px">變量 操作符= 表達式

運算順序

如果你遇到了類似2 + 3 * 4的表達式,首先做加法還是乘法?先做乘法,高中數(shù)學如是說。這意味著乘法運算符比加法運算符有更高的優(yōu)先級。

下表中以從低到高的順序給出了Python中操作符優(yōu)先級列表。給定一個表達式,Python將會首先計算在此表中靠下的操作符與表達式,然后計算靠上的操作符與表達式。

此表取自Python reference manual,包括了所有的運算符。建議使用圓括號標注具有較高優(yōu)先級的部分,這可使程序更可讀。詳情請看改變計算順序。

操作符優(yōu)先級

操作符

描述

lambda

Lambda表達式

or

布爾或

and

布爾與

not x

布爾非

in, not in

成員測試

is, is not

同一性測試

<, <=, >, >=,!=, ==

比較運算符

|

按位或

^

按位異或

&

按位與

<<, >>

位移

+, -

加減

*, /, //, %

乘除、取整除、取余

+x, -x

正負

~x

按位非

**

x.attribute

屬性引用

x[index]

下標

x[index1:index2]

尋址段

f(arguments …)

函數(shù)調(diào)用

(expressions, …)

顯示綁定或元組

[expressions, ...]

顯示列表

{key:datum, …}

顯示字典

表中仍未接觸到的運算符將會在后續(xù)章節(jié)中說明。

擁有相同優(yōu)先級的運算符位于上表的同一行中,例如+-擁有相同優(yōu)先級。

改變計算順序

使用括號可增加表達式可讀性。例如2 + (3 * 4)就比需要運算符優(yōu)先級知識的2 + 3 * 4更好理解。但是仍要避免過量使用括號,例如(2 + (3 * 4))。

使用括號還可以改變運算順序,例如在(2 + 3) * 4中括號使表達式先進行加法運算后進行乘法運算。

結(jié)合律

操作符在優(yōu)先級相同的情況下從左向右計算,例如2 + 3 + 4等價于(2 + 3) + 4。另一些運算符如賦值運算符從右向左計算,例如a = b = c等價于a = (b = c)。

表達式

例子:

#!/usr/bin/python
# Filename: expression.py

length = 5
breadth = 2

area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))

輸出:

   $ python expression.py
   Area is 10
   Perimeter is 14

工作原理:

矩形的長與寬存儲在同名變量中。我們通過計算面積與周長的表達式得出這兩個值。我們將表達式length * breadth的值存儲在變量area中,并使用print函數(shù)打印變量值。在第二種情況中,我們直接使用print函數(shù)打印表達式2 * (length + breadth)的值。

另外即便我們沒有專門在'Area is'與變量area中加入空格,Python仍美觀地打印出了此輸出。Python自動為我們生成了一個漂亮的輸出格式并因此令程序更可讀:我們不需要擔心輸出字符串中的空格。這是另一個Python簡化程序員工作的例子。

總結(jié)

我們了解了書寫任何程序都需要的磚塊:操作符、操作數(shù)和表達式。下一步我們將了解如何在程序中使用這三者。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多