python基礎教程:運算對象、運算符、表達式和語句

編程的本質就是數據和運算,數據由基本數據類型、數據結構來表示,運算就是對這些數據的各類操做,基本的加減乘除、是非判斷、流程控制等等。這些操做就是今天咱們要講的運算符、表達式和語句。shell

前面咱們學習Python的基本語法時,講到了Python程序的的概念,這個行再細分就是運算符(Operators)、運算對象(Operands)、表達式(Express)、語句(Statements)。express

提示:運算和操做這兩個概念在編程中每每是同樣的編程

好比下面這一行代碼:數據結構

a = 5; b = a + 7; c = a if a > b else b

先來分解一下這一行:async

  • 語句: 由表達式組成。此例共三條語句,用分號;分開,即一個物理行有三個邏輯行;
  • 表達式: 由運算符和操做對象組成。此例中的表達式有a + 7a > b等;
  • 運算對象: 即各類對象。此例中的a, b, c, 5, 7等。

用一行表示它們的關係就是:函數

運算對象 + 運算符 -> 表達式 -> 語句學習

運算對象和運算符構成表達式,表達式構成語句測試

![(http://upload-images.jianshu....spa

運算對象

運算對象就是由各類對象構成的集合,這些對象裏面有些是常量,有些是變量code

常量

Python中的常量咱們已經見過不少了,好比整數:9, 7, 8等等,浮點數:3.14, 0.618等等,字符串:'猿人學Python',這些常量咱們看到它們時就知道它們的意思,這就是字面意義上的常量。

字面意義上的常量就是按照它們的字面意義使用它們的值。好比,數字8老是表明它本身,它是一個常量,不能改變它的值。

變量

常量表明具備特定意義的對象,但不足以知足編程的須要。編程常常須要一種既能夠存儲數據有能夠對它進行運算(操做)的東東,這個東東就是變量。編程中要常用變量,就須要給變量起個名字:變量名。變量名的起名規則就是前面講Python基本語法時提到的標識符,忘了的小猿能夠再去看看那一節。

最開始那一行Python代碼中的a, b, c都是變量,而5, 12, 5就是它們各自存儲的值。若是再來一句a = a + 3a的值就變成了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返回True3 == 2返回False'str' == 'str'返回True
!= 不等於比較對象是否不相等 1 != 3返回True3 != 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 布爾非
innot inisis 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)

語句是程序段(一個代碼「塊」)的組成單位。一條語句能夠是一個表達式或某個帶有關鍵字的結構,例如ifwhilefor
語句的例子:

a = 5  # 賦值語句
if a > 3:  #條件語句,其中 a > 3是表達式
    print('a > 3')  #輸出語句

總結

程序由語句組成;語句或是由表達式構成,或是賦值,或是ifwhile等關鍵字的結構;表達式由運算符和運算對象(數字、字符串等常量,變量等)組成,是語句的構成元素。

相關文章
相關標籤/搜索