摘要:用一行表示它們的關(guān)系就是運(yùn)算對(duì)象運(yùn)算符表達(dá)式語句運(yùn)算對(duì)象和運(yùn)算符構(gòu)成表達(dá)式,表達(dá)式構(gòu)成語句運(yùn)算對(duì)象運(yùn)算對(duì)象就是由各種對(duì)象構(gòu)成的集合,這些對(duì)象里面有些是常量,有些是變量。
編程的本質(zhì)就是數(shù)據(jù)和運(yùn)算,數(shù)據(jù)由基本數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)來表示,運(yùn)算就是對(duì)這些數(shù)據(jù)的各種操作,基本的加減乘除、是非判斷、流程控制等等。這些操作就是今天我們要講的運(yùn)算符、表達(dá)式和語句。
前面我們學(xué)習(xí)Python的基本語法時(shí),講到了Python程序的行的概念,這個(gè)行再細(xì)分就是運(yùn)算符(Operators)、運(yùn)算對(duì)象(Operands)、表達(dá)式(Express)、語句(Statements)。
提示:運(yùn)算和操作這兩個(gè)概念在編程中往往是一樣的
比如下面這一行代碼:
a = 5; b = a + 7; c = a if a > b else b
先來分解一下這一行:
語句: 由表達(dá)式組成。此例共三條語句,用分號(hào);分開,即一個(gè)物理行有三個(gè)邏輯行;
表達(dá)式: 由運(yùn)算符和操作對(duì)象組成。此例中的表達(dá)式有a + 7,?a > b等;
運(yùn)算對(duì)象: 即各種對(duì)象。此例中的a, b, c, 5, 7等。
用一行表示它們的關(guān)系就是:
運(yùn)算對(duì)象 + 運(yùn)算符 -> 表達(dá)式 -> 語句
運(yùn)算對(duì)象和運(yùn)算符構(gòu)成表達(dá)式,表達(dá)式構(gòu)成語句
![(http://upload-images.jianshu....
運(yùn)算對(duì)象運(yùn)算對(duì)象就是由各種對(duì)象構(gòu)成的集合,這些對(duì)象里面有些是常量,有些是變量。
常量Python中的常量我們已經(jīng)見過很多了,比如整數(shù):9, 7, 8等等,浮點(diǎn)數(shù):3.14, 0.618等等,字符串:"猿人學(xué)Python",這些常量我們看到它們時(shí)就知道它們的意思,這就是字面意義上的常量。
字面意義上的常量就是按照它們的字面意義使用它們的值。比如,數(shù)字8總是代表它自己,它是一個(gè)常量,不能改變它的值。
變量常量代表具有特定意義的對(duì)象,但不足以滿足編程的需要。編程經(jīng)常需要一種既可以存儲(chǔ)數(shù)據(jù)有可以對(duì)它進(jìn)行運(yùn)算(操作)的東東,這個(gè)東東就是變量。編程中要經(jīng)常使用變量,就需要給變量起個(gè)名字:變量名。變量名的起名規(guī)則就是前面講Python基本語法時(shí)提到的標(biāo)識(shí)符,忘了的小猿可以再去看看那一節(jié)。
最開始那一行Python代碼中的a, b, c都是變量,而5, 12, 5就是它們各自存儲(chǔ)的值。如果再來一句a = a + 3,a的值就變成了8,變量a的值就變了。
變量的賦值就是給變量一個(gè)值,比如a = 3,就是給a變量以3的值。
a = 3 # 把3賦值給a,此時(shí)a的值為3 b = a # 把a(bǔ)賦值給b,此時(shí)b的值等于a的值,也是3 c, d = a, b # 這是多重賦值,相當(dāng)于 c = a; d = b運(yùn)算符
運(yùn)算符就是對(duì)運(yùn)算對(duì)象進(jìn)行的具體運(yùn)算名稱。不同的運(yùn)算符代表不同的運(yùn)算,比如加減乘除。
通過Python shell可以方便的體驗(yàn)運(yùn)算符的使用:
In [115]: 2 + 5 Out[115]: 7 In [116]: 8 * 9 Out[116]: 72
下面我們用一個(gè)表格來清晰的列出各種運(yùn)算符及其用法。
運(yùn)算符 | 名稱 | 含義 | 示例 | ||
---|---|---|---|---|---|
+ | 加 | 兩個(gè)對(duì)象相加 | 2 + 5得7;?"猿人學(xué)" + "Python"得到"猿人學(xué)Python" | ||
- | 減 | 兩數(shù)相減,或負(fù)數(shù) | 10 - 5得到5;-3.1表示負(fù)數(shù)。 | ||
* | 乘 | 兩數(shù)相乘,或字符串重復(fù)多次 | 3 * 7得到21;"py" * 2得到pypy。 | ||
** | 冪 | 返回x的y次冪 | 2**8得256;?2.3**3得12.167 | ||
/ | 除 | 兩數(shù)相除 | 10 / 2得到5;10 / 3?得到 3.333333 | ||
// | 向下取整除 | 兩數(shù)相除,返回離商最近且小的整數(shù)。如果除數(shù)和被除數(shù)中有浮點(diǎn)數(shù),返回的也是浮點(diǎn)數(shù)。 | 11 // 2得到5;-11 // 2得到-6;5 // 1.34得到3.0. | ||
% | 模除 | 求余數(shù) | 10 % 3得到1;10 % 3.3得到0.1;-10 % 3.3得到3.2,因?yàn)?b>-10 // 3.3得 -4,-10 - 3.3*-4得到3.2. | ||
<< | 左移 | 二進(jìn)制操作,把數(shù)字的每個(gè)比特位向左移動(dòng)特定位數(shù)(數(shù)字在內(nèi)存中以二進(jìn)制0,1表示) | 2 << 3得到16,2的二進(jìn)制是:00000010,左移3位變成:0b00010000即16 | ||
>> | 右移 | 把一個(gè)數(shù)的比特位向右移動(dòng)特定位數(shù) | 2 >> 1得到1 | ||
& | 位與 | 兩數(shù)對(duì)應(yīng)的比特位進(jìn)行與操作 | 8 & 9得8 | ||
` | ` | 位或 | 兩數(shù)對(duì)應(yīng)的比特位進(jìn)行或操作 | `8 | 9`得9 |
^ | 位異或 | 兩數(shù)對(duì)應(yīng)的比特位進(jìn)行異或操作 | 8^9得1 | ||
~ | 位反 | 一個(gè)數(shù)x的比特位全部取反,值為-(x+1) | ~8的 -9 | ||
< | 小于 | 返回x是否小于y。所有比較運(yùn)算符返回的不是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 | ||
== | 等于 | 比較對(duì)象是否相等 | 2 == 2返回True,3 == 2返回False,"str" == "str"返回True | ||
!= | 不等于比較對(duì)象是否不相等 | 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,因?yàn)閤是False。這種情況下,Python不再檢驗(yàn)y的布爾值,因?yàn)閍nd左邊的x已經(jīng)是False了,不管右邊的y是真是假都不影響整個(gè)表達(dá)式的值,所以就不再去驗(yàn)證y是真是假。這叫做“短路求值”。 | ||
or | 布爾或 | 如果x是True則返回True,否則返回y的布爾值 | x = True; y = False; x or y返回True。這里同樣適用“短路求值” |
小時(shí)候?qū)W數(shù)學(xué)的時(shí)候,我們知道先乘除后加減,比如要算2 + 5 * 6的話,先算5 * 6得到30, 再算2 + 30得到32. 也就是說,乘法運(yùn)算符的優(yōu)先級(jí)高于加法運(yùn)算符。
下面的表格就是Python的運(yùn)算符的優(yōu)先級(jí),從低到高排列,同一個(gè)單元格里面的運(yùn)算符具有相同的優(yōu)先級(jí),這時(shí)候運(yùn)算順序從左到右。不過,還是建議大家通過使用圓括號(hào)來分組表達(dá)式(運(yùn)算符和運(yùn)算對(duì)象),這樣可以清楚的指出運(yùn)算的先后順序,同時(shí)也讓程序更加易讀。
運(yùn)算符 | 描述 | |
---|---|---|
lambda | Lambda函數(shù)表達(dá)式 | |
if-else | 條件表達(dá)式 | |
or | 布爾或 | |
and | 布爾與 | |
not | 布爾非 | |
in,?not in,?is,?is not,?<,?<=,?>,?>=,?!=,?== | 比較,包括成員測(cè)試和同一性測(cè)試 | |
` | ` | 位或 |
^ | 位異或 | |
& | 位與 | |
<<,?>> | 移位 | |
+,?- | 加、減 | |
*,?@,?/,?//,?% | 乘,矩陣乘法,除,向下取整除,模除 | |
+x,?-x,?~x | 整數(shù),負(fù)數(shù),位非(位反) | |
** | 冪運(yùn)算符。它的綁定不如其右側(cè)的算數(shù)或按位一元運(yùn)算符緊密,所以,2**-1?的值是0.5. | |
await | await表達(dá)式(asyncio中使用) | |
x[index],?x[index:index],?x(arguments...),?x.attribute | 下標(biāo),切片,函數(shù)調(diào)用,屬性引用 | |
(expressions...),?[expressions...],?{key:value...},?{expressions...} | 綁定或元組顯示,列表顯示,字典顯示,集合顯示 |
上面表格中有我們還沒有接觸到的運(yùn)算符,這將會(huì)在后面的章節(jié)中講解。
程序根據(jù)上表的順序來進(jìn)行運(yùn)算,但是我們也可以通過圓括號(hào)來改變它們的計(jì)算順序,比如(2 + 7) * 3中,就先計(jì)算圓括號(hào)里面的加法,然后再進(jìn)行乘法。這個(gè)原則跟小學(xué)時(shí)學(xué)到的算術(shù)是一樣的。
表達(dá)式(Expression)表達(dá)式是一段可以計(jì)算為某個(gè)值的語法片段。換句話說,就是表達(dá)元素的累積,比如文字,名稱,屬性訪問,運(yùn)算符或函數(shù)調(diào)用,它們都返回一個(gè)值。與許多其它語言相比,并非所有語言結(jié)構(gòu)都是表達(dá)式。還有一些語句不能用作表達(dá)式,比如while。賦值也是語句,但不是表達(dá)式。
從上面對(duì)表達(dá)式的定義來看,a > 3是表達(dá)式,a = 3不是表達(dá)式,而是賦值語句。
語句(Statements)語句是程序段(一個(gè)代碼“塊”)的組成單位。一條語句可以是一個(gè)表達(dá)式或某個(gè)帶有關(guān)鍵字的結(jié)構(gòu),例如if,?while或for。
語句的例子:
a = 5 # 賦值語句 if a > 3: #條件語句,其中 a > 3是表達(dá)式 print("a > 3") #輸出語句總結(jié)
程序由語句組成;語句或是由表達(dá)式構(gòu)成,或是賦值,或是if,?while等關(guān)鍵字的結(jié)構(gòu);表達(dá)式由運(yùn)算符和運(yùn)算對(duì)象(數(shù)字、字符串等常量,變量等)組成,是語句的構(gòu)成元素。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43757.html
文章目錄 強(qiáng)烈推薦系列教程,建議學(xué)起來!! 一.pycharm下載安裝二.python下載安裝三.pycharm上配置python四.配置鏡像源讓你下載嗖嗖的快4.1pycharm內(nèi)部配置 4.2手動(dòng)添加鏡像源4.3永久配置鏡像源 五.插件安裝(比如漢化?)5.1自動(dòng)補(bǔ)碼神器第一款5.2漢化pycharm5.3其它插件 六.美女背景七.自定義腳本開頭八、這個(gè)前言一定要看九、pyt...
摘要:函數(shù)內(nèi)的變量被稱為局部變量,這是與全局變量相反的概念。有一些進(jìn)行函數(shù)式編程的機(jī)制。繼承以通用的類為基礎(chǔ)建立專門的類對(duì)象。 6.4.5 參數(shù)收集的逆過程 假設(shè)有如下函數(shù): def add(x,y): return x+y 比如說有個(gè)包含由兩個(gè)相加的數(shù)字組成的元組: params = (1,2) 使用*運(yùn)算符對(duì)參數(shù)進(jìn)行分配,不過是在調(diào)用而不是在定義時(shí)使用: >>> add(*params)...
馬上就要開始啦這次共組織15個(gè)組隊(duì)學(xué)習(xí) 涵蓋了AI領(lǐng)域從理論知識(shí)到動(dòng)手實(shí)踐的內(nèi)容 按照下面給出的最完備學(xué)習(xí)路線分類 難度系數(shù)分為低、中、高三檔 可以按照需要參加 - 學(xué)習(xí)路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
摘要:在定義函數(shù)時(shí)給定的名稱稱作形參,在調(diào)用函數(shù)時(shí)你所提供給函數(shù)的值稱作實(shí)參。調(diào)用函數(shù)要調(diào)用一個(gè)函數(shù),需要知道函數(shù)的名稱和參數(shù)。默認(rèn)參數(shù)值可以有效幫助解決這一情況。是默認(rèn)參數(shù)定義默認(rèn)參數(shù)要牢記一點(diǎn)默認(rèn)參數(shù)必須指向不變對(duì)象。 關(guān)于數(shù)據(jù)科學(xué)在做什么,我們已經(jīng)在前兩篇文章中進(jìn)行了總結(jié),即專題概述和描述性統(tǒng)計(jì)分析。要進(jìn)行數(shù)據(jù)科學(xué)的探索,需要一個(gè)好工具,就是Python。從本篇開始,將總結(jié)學(xué)習(xí)Pyth...
閱讀 2805·2021-10-11 11:08
閱讀 1525·2021-09-30 09:48
閱讀 1083·2021-09-22 15:29
閱讀 1076·2019-08-30 15:54
閱讀 1006·2019-08-29 15:19
閱讀 563·2019-08-29 13:12
閱讀 3196·2019-08-26 13:53
閱讀 998·2019-08-26 13:28