python基本对象_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基础教程:运算对象、运算符、表达式和语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 因“通货膨胀”,三星美国得州工厂建设预算
- 下一篇: 戴尔游匣 G15 2023 款 RTX