- Python程序設(shè)計(jì)與算法基礎(chǔ)教程(第2版)(微課版)
- 江紅 余青松
- 831字
- 2019-11-15 20:18:53
2.5 表達(dá)式和運(yùn)算符
2.5.1 表達(dá)式的組成
表達(dá)式是可以計(jì)算的代碼片段,由操作數(shù)和運(yùn)算符構(gòu)成。操作數(shù)、運(yùn)算符和圓括號(hào)按一定的規(guī)則組成表達(dá)式。表達(dá)式通過(guò)運(yùn)算后產(chǎn)生運(yùn)算結(jié)果,返回結(jié)果對(duì)象。運(yùn)算結(jié)果對(duì)象的類(lèi)型由操作數(shù)和運(yùn)算符共同決定。
運(yùn)算符表明對(duì)操作數(shù)進(jìn)行什么樣的運(yùn)算。運(yùn)算符包括+、-、*、/等。操作數(shù)包括文本常量(沒(méi)有名稱(chēng)的常數(shù)值,例如1、"abc")、變量(例如i=123)、類(lèi)的成員變量/函數(shù)(例如math.pi、math.sin(x))等,也可以包含子表達(dá)式(例如(2**10))。
表達(dá)式既可以非常簡(jiǎn)單,也可以非常復(fù)雜。當(dāng)表達(dá)式包含多個(gè)運(yùn)算符時(shí),運(yùn)算符的優(yōu)先級(jí)控制各個(gè)運(yùn)算符的計(jì)算順序。例如,表達(dá)式x+y*z按x+(y*z)計(jì)算,因?yàn)?運(yùn)算符的優(yōu)先級(jí)高于+運(yùn)算符。
【例2.22】 表達(dá)式示例。

2.5.2 表達(dá)式的書(shū)寫(xiě)規(guī)則
Python表達(dá)式遵循下列書(shū)寫(xiě)規(guī)則。
(1)表達(dá)式從左到右在同一個(gè)基準(zhǔn)上書(shū)寫(xiě)。例如,數(shù)學(xué)公式a2+b2應(yīng)該寫(xiě)為a**2+b**2。
(2)乘號(hào)不能省略。例如,數(shù)學(xué)公式ab(表示a乘以b)應(yīng)寫(xiě)為a*b。
(3)括號(hào)必須成對(duì)出現(xiàn),而且只能使用圓括號(hào);圓括號(hào)可以嵌套使用。
【例2.23】 復(fù)雜表達(dá)式示例。
數(shù)學(xué)表達(dá)式寫(xiě)成Python表達(dá)式為
。
2.5.3 運(yùn)算符概述
Python運(yùn)算符用于在表達(dá)式中對(duì)一個(gè)或多個(gè)操作數(shù)進(jìn)行計(jì)算并返回結(jié)果值,接受一個(gè)操作數(shù)的運(yùn)算符被稱(chēng)作一元運(yùn)算符,例如正負(fù)號(hào)運(yùn)算符+或-;接受兩個(gè)操作數(shù)的運(yùn)算符被稱(chēng)作二元運(yùn)算符,例如算術(shù)運(yùn)算符+、-、*、/等。
如果一個(gè)表達(dá)式中包含多個(gè)運(yùn)算符,則計(jì)算順序取決于運(yùn)算符的結(jié)合順序和優(yōu)先級(jí)。
優(yōu)先級(jí)高的運(yùn)算符優(yōu)先計(jì)算,例如,在1+2*3中*的優(yōu)先級(jí)比+高,故先計(jì)算2*3。同一優(yōu)先級(jí)的運(yùn)算符按結(jié)合順序依次計(jì)算,例如+、-(以及*、/)為同一優(yōu)先級(jí)左結(jié)合的運(yùn)算符,故1+2-3等同于(1+2)-3;2*4/2等同于(2*4)/2。注意,賦值運(yùn)算符=為右結(jié)合運(yùn)算符,故a=b=c等同于a=(b=c)。用戶(hù)可以使用圓括號(hào)“()”強(qiáng)制改變運(yùn)算順序。
【例2.24】 表達(dá)式中運(yùn)算符的優(yōu)先級(jí)示例。

2.5.4 Python運(yùn)算符
Python語(yǔ)言定義了許多運(yùn)算符,按優(yōu)先順序排列如表2-4所示。本書(shū)后續(xù)章節(jié)將陸續(xù)闡述。通過(guò)運(yùn)算符重載(overload)可以為用戶(hù)自定義的類(lèi)型定義新的運(yùn)算符。
表2-4 Python運(yùn)算符

- 深度實(shí)踐OpenStack:基于Python的OpenStack組件開(kāi)發(fā)
- Access 2010數(shù)據(jù)庫(kù)基礎(chǔ)與應(yīng)用項(xiàng)目式教程(第3版)
- Banana Pi Cookbook
- Web全棧工程師的自我修養(yǎng)
- Java項(xiàng)目實(shí)戰(zhàn)精編
- Java程序設(shè)計(jì)
- 自然語(yǔ)言處理Python進(jìn)階
- Scala編程(第5版)
- 網(wǎng)絡(luò)數(shù)據(jù)采集技術(shù):Java網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)
- 深入解析Java編譯器:源碼剖析與實(shí)例詳解
- Mastering Apache Camel
- Python 3快速入門(mén)與實(shí)戰(zhàn)
- Java自然語(yǔ)言處理(原書(shū)第2版)
- Java Web動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)(第2版·微課版)
- C++面向?qū)ο蟪绦蛟O(shè)計(jì)