python基礎教程:運算物件、運算子、表示式和語句
程式設計的本質就是資料和運算,資料由基本資料型別、資料結構來表示,運算就是對這些資料的各種操作,基本的加減乘除、是非判斷、流程控制等等。這些操作就是今天我們要講的運算子、表示式和語句。

前面我們學習Python的基本語法時,講到了Python程式的 行 的概念,這個行再細分就是運算子(Operators)、運算物件(Operands)、表示式(Express)、語句(Statements)。
提示:運算和操作這兩個概念在程式設計中往往是一樣的
比如下面這一行程式碼:
a = 5; b = a + 7; c = a if a > b else b
先來分解一下這一行:
- 語句: 由表示式組成。此例共三條語句,用分號
;
分開,即一個物理行有三個邏輯行; - 表示式: 由運算子和操作物件組成。此例中的表示式有
a + 7
,a > b
等; - 運算物件: 即各種物件。此例中的
a, b, c, 5, 7
等。
用一行表示它們的關係就是:
運算物件 + 運算子 -> 表示式 -> 語句
運算物件和運算子構成表示式,表示式構成語句
運算物件
運算物件就是由各種物件構成的集合,這些物件裡面有些是 常量 ,有些是 變數 。
常量
Python中的常量我們已經見過很多了,比如整數: 9, 7, 8
等等,浮點數: 3.14, 0.618
等等,字串: '猿人學Python'
,這些常量我們看到它們時就知道它們的意思,這就是字面意義上的常量。
字面意義上的常量就是按照它們的 字面意義 使用它們的值。比如,數字 8
總是代表它自己,它是一個常量,不能改變它的值。
變數
常量代表具有特定意義的物件,但不足以滿足程式設計的需要。程式設計經常需要一種既可以儲存資料有可以對它進行運算(操作)的東東,這個東東就是 變數 。程式設計中要經常使用變數,就需要給變數起個名字:變數名。變數名的起名規則就是前面講Python基本語法時提到的 識別符號 ,忘了的小猿可以再去看看那一節。
最開始那一行Python程式碼中的 a, b, c
都是變數,而 5, 12, 5
就是它們各自儲存的值。如果再來一句 a = a + 3
, a
的值就變成了 8
,變數 a
的值就變了。
變數的賦值就是給變數一個值,比如 a = 3
,就是給a變數以3的值。
a = 3# 把3賦值給a,此時a的值為3 b = a# 把a賦值給b,此時b的值等於a的值,也是3 c, d = a, b# 這是多重賦值,相當於 c = a; d = b
運算子
運算子就是對運算物件進行的具體運算名稱。不同的運算子代表不同的運算,比如加減乘除。
通過Python shell可以方便的體驗運算子的使用:
In [115]: 2 + 5 Out[115]: 7 In [116]: 8 * 9 Out[116]: 72
下面我們用一個表格來清晰的列出各種運算子及其用法。
運算子 | 名稱 | 含義 | 示例 | ||
---|---|---|---|---|---|
+ |
加 | 兩個物件相加 | 2 + 5 得7; '猿人學' + 'Python' 得到 '猿人學Python' |
||
- |
減 | 兩數相減,或負數 | 10 - 5 得到5; -3.1 表示負數。 |
||
* |
乘 | 兩數相乘,或字串重複多次 | 3 * 7 得到21; 'py' * 2 得到 pypy 。 |
||
** |
冪 | 返回x的y次冪 | 2**8 得256; 2.3**3 得12.167 |
||
/ |
除 | 兩數相除 | 10 / 2 得到5; 10 / 3 得到 3.333333 |
||
// |
向下取整除 | 兩數相除,返回離商最近且小的整數。如果除數和被除數中有浮點數,返回的也是浮點數。 | 11 // 2 得到5; -11 // 2 得到-6; 5 // 1.34 得到3.0. |
||
% |
模除 | 求餘數 | 10 % 3 得到1; 10 % 3.3 得到0.1; -10 % 3.3 得到3.2,因為 -10 // 3.3 得 -4, -10 - 3.3*-4 得到3.2. |
||
<< |
左移 | 二進位制操作,把數字的每個位元位向左移動特定位數(數字在記憶體中以二進位制 0,1 表示) |
2 << 3 得到16, 2 的二進位制是: 00000010 ,左移3位變成: 0b00010000 即16 |
||
>> |
右移 | 把一個數的位元位向右移動特定位數 | 2 >> 1 得到1 |
||
& |
位與 | 兩數對應的位元位進行與操作 | 8 & 9 得8 |
||
` | ` | 位或 | 兩數對應的位元位進行或操作 | `8 | 9`得9 |
^ |
位異或 | 兩數對應的位元位進行異或操作 | 8^9 得1 |
||
~ |
位反 | 一個數x的位元位全部取反,值為-(x+1) | ~8 的 -9 |
||
< |
小於 | 返回x是否小於y。所有比較運算子返回的不是 True 就是 False |
8 < 9 得到 True 。 |
||
> |
大於 | 返回x是否大於y | 8 > 9 得到 False 。 |
||
<= |
小於等於 | 返回x是否小於等於y | x = 2; y = 3; x <= y 返回 True |
||
>= |
大於等於 | 返回x是否大於等於y | x = 6; y = 4; x >= y 返回 True |
||
== |
等於 | 比較物件是否相等 | 2 == 2 返回 True , 3 == 2 返回 False , 'str' == 'str' 返回 True |
||
!= |
不等於比較物件是否不相等 | 1 != 3 返回 True , 3 != 3 返回False |
|||
not |
布林 非 | 如果x是 True 則返回 False ;如果x是 False 則返回 True |
x = False; not x 返回 True 。 |
||
and |
布林 與 | x and y 如果x是 False 則返回 False ,否則返回y的布林值 |
x = False; y = True; x and y 返回 False ,因為x是False。這種情況下,Python不再檢驗y的布林值,因為and左邊的x已經是False了,不管右邊的y是真是假都不影響整個表示式的值,所以就不再去驗證y是真是假。這叫做“短路求值”。 |
||
or |
布林 或 | 如果x是 True 則返回True,否則返回y的布林值 |
x = True; y = False; x or y 返回True。這裡同樣適用“短路求值” |
運算子優先順序(Operator precedence)
小時候學數學的時候,我們知道先乘除後加減,比如要算 2 + 5 * 6
的話,先算 5 * 6
得到30, 再算 2 + 30
得到32. 也就是說,乘法運算子的優先順序高於加法運算子。
下面的表格就是Python的運算子的優先順序,從低到高排列,同一個單元格里面的運算子具有相同的優先順序,這時候運算順序從左到右。不過,還是建議大家通過使用圓括號來分組表示式(運算子和運算物件),這樣可以清楚的指出運算的先後順序,同時也讓程式更加易讀。
運算子 | 描述 | |
---|---|---|
lambda |
Lambda函式表示式 | |
if-else |
條件表示式 | |
or |
布林或 | |
and |
布林與 | |
not |
布林非 | |
in , not in , is , is not , < , <= , > , >= , != , == |
比較,包括成員測試和同一性測試 | |
` | ` | 位或 |
^ |
位異或 | |
& |
位與 | |
<< , >> |
移位 | |
+ , - |
加、減 | |
* , @ , / , // , % |
乘,矩陣乘法,除,向下取整除,模除 | |
+x , -x , ~x |
整數,負數,位非(位反) | |
** |
冪運算子。它的繫結不如其右側的算數或按位一元運算子緊密,所以, 2**-1 的值是0.5. |
|
await |
await表示式(asyncio中使用) | |
x[index] , x[index:index] , x(arguments...) , x.attribute |
下標,切片,函式呼叫,屬性引用 | |
(expressions...) , [expressions...] , {key:value...} , {expressions...} |
繫結或元組顯示,列表顯示,字典顯示,集合顯示 |
上面表格中有我們還沒有接觸到的運算子,這將會在後面的章節中講解。
程式根據上表的順序來進行運算,但是我們也可以通過圓括號來改變它們的計算順序,比如 (2 + 7) * 3
中,就先計算圓括號裡面的加法,然後再進行乘法。這個原則跟小學時學到的算術是一樣的。
表示式(Expression)
表示式是一段可以計算為某個值的語法片段。換句話說,就是表達元素的累積,比如文字,名稱,屬性訪問,運算子或函式呼叫,它們都返回一個值。與許多其它語言相比,並非所有語言結構都是表示式。還有一些語句不能用作表示式,比如 while
。 賦值
也是語句,但不是表示式。
從上面對錶達式的定義來看, a > 3
是表示式, a = 3
不是表示式,而是賦值語句。
語句(Statements)
語句是程式段(一個程式碼“塊”)的組成單位。一條語句可以是一個表示式或某個帶有關鍵字的結構,例如 if
, while
或 for
。
語句的例子:
a = 5# 賦值語句 if a > 3:#條件語句,其中 a > 3是表示式 print('a > 3')#輸出語句
總結
程式由語句組成;語句或是由表示式構成,或是賦值,或是 if
, while
等關鍵字的結構;表示式由運算子和運算物件(數字、字串等常量,變數等)組成,是語句的構成元素。
大家在學python的時候肯定會遇到很多難題,以及對於新技術的追求,這裡推薦一下我們的Python學習扣qun:784758214,這裡是python學習者聚集地!!同時,自己是一名高階python開發工程師,從基礎的python指令碼到web開發、爬蟲、django、資料探勘等,零基礎到專案實戰的資料都有整理。送給每一位python的小夥伴!每日分享一些學習的方法和需要注意的小細節
