您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么理解python運算對象、運算符、表達式和語句”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解python運算對象、運算符、表達式和語句”吧!
編程的本質就是數據和運算,數據由基本數據類型、數據結構來表示,運算就是對這些數據的各種操作,基本的加減乘除、是非判斷、流程控制等等。這些操作就是今天我們要講的運算符、表達式和語句。
提示:運算和操作這兩個概念在編程中往往是一樣的
比如下面這一行代碼:
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。這里同樣適用“短路求值” |
小時候學數學的時候,我們知道先乘除后加減,比如要算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
中,就先計算圓括號里面的加法,然后再進行乘法。這個原則跟小學時學到的算術是一樣的。
表達式是一段可以計算為某個值的語法片段。換句話說,就是表達元素的累積,比如文字,名稱,屬性訪問,運算符或函數調用,它們都返回一個值。與許多其它語言相比,并非所有語言結構都是表達式。還有一些語句不能用作表達式,比如while
。賦值
也是語句,但不是表達式。
從上面對表達式的定義來看,a > 3
是表達式,a = 3
不是表達式,而是賦值語句。
語句是程序段(一個代碼“塊”)的組成單位。一條語句可以是一個表達式或某個帶有關鍵字的結構,例如if
, while
或for
。
語句的例子:
a = 5 # 賦值語句 if a > 3: #條件語句,其中 a > 3是表達式 print('a > 3') #輸出語句
到此,相信大家對“怎么理解python運算對象、運算符、表達式和語句”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。