Python初學(xué)者入門隨筆 04 Python 運(yùn)算符

什么是運(yùn)算符?

Python 的運(yùn)算符。舉個(gè)簡單的例子 4 +5 = 9 。 例子中,4 和 5 被稱為操作數(shù),"+" 稱為運(yùn)算符。

Python語言支持以下類型的運(yùn)算符:

  • 算術(shù)運(yùn)算符
  • 比較(關(guān)系)運(yùn)算符
  • 賦值運(yùn)算符
  • 邏輯運(yùn)算符
  • 位運(yùn)算符
  • 成員運(yùn)算符
  • 身份運(yùn)算符
  • 運(yùn)算符優(yōu)先級(jí)

Python 算術(shù)運(yùn)算符

以下假設(shè)變量 a = 10,b = 20

運(yùn)算符 描述 實(shí)例
+ 加 - 兩個(gè)對象相加 a + b 輸出結(jié)果 30
- 減 - 得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù) a - b 輸出結(jié)果 -10
* 乘 - 兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串 a * b 輸出結(jié)果 200
/ 除 - x 除以 y b / a 輸出結(jié)果 2
% 取模 - 返回除法的余數(shù) b % a 輸出結(jié)果 0
** 冪 - 返回 x 的 y 次冪 a ** b 為 10 的 20 次方,輸出結(jié)果 100000000000000000000
// 取整除 - 返回商的整數(shù)部分(向下取整) 9 // 2 = 4,-9 // 2 = -5

注意:Python2.x 里,整數(shù)除整數(shù),只能得出整數(shù)。如果要得到小數(shù)部分,把其中一個(gè)數(shù)改成浮點(diǎn)數(shù)即可。
實(shí)例:

print 1 / 2
>> 0
print 1.0 / 2
>> 0.5
print 1 / float(2)
>> 0.5

Python 比較運(yùn)算符

以下假設(shè)變量 a = 10,b = 20

運(yùn)算符 描述 實(shí)例
== 等于 - 比較對象是否相等 (a == b) 返回 False
!= 不等于 - 比較對象是否不相等 (a != b) 返回 True
<> 不等于 - 比較對象是否不相等 (a <> b) 返回 True。這個(gè)運(yùn)算符類似 !=
> 大于 - 返回 x 是否大于 y (a > b) 返回 False
< 小于 - 返回 x 是否小于 y。所有比較運(yùn)算符返回 1 表示真,返回 0 表示假。這分別與特殊的變量 True 和 False 等價(jià) (a < b) 返回 True
>= 大于等于 - 返回 x 是否大于等于 y (a >= b) 返回 False
<= 小于等于 - 返回 x 是否小于等于 y (a <= b) 返回 True

Python 賦值運(yùn)算符

以下假設(shè)變量 a = 10b = 20

運(yùn)算符 描述 實(shí)例
= 簡單的賦值運(yùn)算符 c = a + b
將 a + b 的運(yùn)算結(jié)果賦值為 c
+= 加法賦值運(yùn)算符 c += a 等效于 c = c + a
-= 減法賦值運(yùn)算符 c -= a 等效于 c = c - a
*= 乘法賦值運(yùn)算符 c *= a 等效于 c = c * a
/= 除法賦值運(yùn)算符 c /= a 等效于 c = c / a
%= 取模賦值運(yùn)算符 c %= a 等效于 c = c % a
**= 冪賦值運(yùn)算符 c **= a 等效于 c = c ** a
//= 取整除賦值運(yùn)算符 c //= a 等效于 c = c // a

Python 位運(yùn)算符

按位運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計(jì)算的。Python 中的按位運(yùn)算法則如下:
以下假設(shè)變量 a = 60,b = 13
二進(jìn)制解釋 a = 0011 1100,b = 0000 1101

運(yùn)算符 描述 實(shí)例
& 按位與運(yùn)算符:
參與運(yùn)算的兩個(gè)值,如果兩個(gè)相應(yīng)位都為 1 ,則該位的結(jié)果為 1 ,否則為 0
(a & b) 輸出結(jié)果 12 ,
二進(jìn)制解釋: 0000 1100
| 按位或運(yùn)算符:
只要對應(yīng)的兩個(gè)二進(jìn)位有一個(gè)為 1 時(shí),結(jié)果位就為 1
(a | b) 輸出結(jié)果 61 ,
二進(jìn)制解釋: 0011 1101
^ 按位異或運(yùn)算符:
當(dāng)兩對應(yīng)的二進(jìn)位相異時(shí),結(jié)果為 1
(a ^ b) 輸出結(jié)果 49 ,
二進(jìn)制解釋: 0011 0001
~ 按位取反運(yùn)算符:
對數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把 1 變?yōu)?0 ,把 0 變?yōu)?1 。~x 類似于 -x-1
(~ a) 輸出結(jié)果 -61 ,
二進(jìn)制解釋: 1100 0011,在一個(gè)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼形式
<< 左移動(dòng)運(yùn)算符:
運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由 << 右邊的數(shù)字指定了移動(dòng)的位數(shù),高位丟棄,低位補(bǔ) 0
a << 2 輸出結(jié)果 240 ,
二進(jìn)制解釋: 1111 0000
>> 右移動(dòng)運(yùn)算符:
把">>"左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,">>"右邊的數(shù)字指定了移動(dòng)的位數(shù)
a >> 2 輸出結(jié)果 15 ,
二進(jìn)制解釋: 0000 1111

Python 邏輯運(yùn)算符

Python 語言支持邏輯運(yùn)算符,以下假設(shè)變量 a = 10,b = 20

運(yùn)算符 邏輯表達(dá)式 描述 實(shí)例
and x and y 布爾"與"
如果 x 為 False,x and y 返回 False,否則它返回 y 的計(jì)算值。
(a and b) 返回 20
or x or y 布爾"或"
如果 x 是非 0,它返回 x 的值,否則它返回 y 的計(jì)算值。
(a or b) 返回 10
not not x 布爾"非"
如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。
not(a and b) 返回 False

Python 成員運(yùn)算符

除了以上的一些運(yùn)算符之外,Python 還支持成員運(yùn)算符,包含了一系列的成員,包括字符串,列表或元組。

運(yùn)算符 描述 實(shí)例
in 如果在指定的序列中找到值返回 True,否則返回 False。 (x in y),如果 x 在 y 序列中返回 True,否則返回 False
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 (x not in y),如果 x 不在 y 序列中返回 True,否則返回 False
a = 10
b = 20
testList = [1, 2, 3, 4, 5]

if a in testList:
    print "1 - 變量 a 在給定的列表中 testList 中"
else:
    print "1 - 變量 a 不在給定的列表中 testList 中"

if b not in testList:
    print "2 - 變量 b 不在給定的列表中 testList 中"
else:
    print "2 - 變量 b 在給定的列表中 testList 中"

# 修改變量 a 的值
a = 2
if a in testList:
    print "3 - 變量 a 在給定的列表中 testList 中"
else:
    print "3 - 變量 a 不在給定的列表中 testList 中"

返回值如下:

1 - 變量 a 不在給定的列表中 testList 中
2 - 變量 b 不在給定的列表中 testList 中
3 - 變量 a 在給定的列表中 testList 中

Python 身份運(yùn)算符

身份運(yùn)算符用于比較兩個(gè)對象的存儲(chǔ)單元

運(yùn)算符 描述 實(shí)例
is is 是判斷兩個(gè)標(biāo)識(shí)符是不是引用自一個(gè)對象 x is y,類似 id(x) == id(y)。如果引用的是同一個(gè)對象則返回 True,否則返回 False
is not is not 是判斷兩個(gè)標(biāo)識(shí)符是不是引用自不同對象 x is not y ,類似 id(x) != id(y)。如果引用的不是同一個(gè)對象則返回結(jié)果 True,否則返回 False
a = 20
b = 20

if a is b:
    print "1 - a 和 b 有相同的標(biāo)識(shí)"
else:
    print "1 - a 和 b 沒有相同的標(biāo)識(shí)"

if a is not b:
    print "2 - a 和 b 沒有相同的標(biāo)識(shí)"
else:
    print "2 - a 和 b 有相同的標(biāo)識(shí)"

# 修改變量 b 的值
b = 30
if a is b:
    print "3 - a 和 b 有相同的標(biāo)識(shí)"
else:
    print "3 - a 和 b 沒有相同的標(biāo)識(shí)"

if a is not b:
    print "4 - a 和 b 沒有相同的標(biāo)識(shí)"
else:
    print "4 - a 和 b 有相同的標(biāo)識(shí)"

輸出如下:

1 - a 和 b 有相同的標(biāo)識(shí)
2 - a 和 b 有相同的標(biāo)識(shí)
3 - a 和 b 沒有相同的標(biāo)識(shí)
4 - a 和 b 沒有相同的標(biāo)識(shí)

is== 區(qū)別:
is 用于判斷兩個(gè)變量引用對象是否為同一個(gè)(同一塊內(nèi)存空間)。
== 用于判斷引用變量的值是否相等。
實(shí)例如下:

a = [1, 2, 3]

b = a
print b is a
>> True
print b == a
>> True

b = a[:]
print b is a
>> False
print b == a
>> True

Python 運(yùn)算符優(yōu)先級(jí)

以下表格列出了從最高最低優(yōu)先級(jí)的所有運(yùn)算符:

運(yùn)算符 描述
** 指數(shù) (最高優(yōu)先級(jí))
~ + - 按位翻轉(zhuǎn), 一元加號(hào)和減號(hào) (最后兩個(gè)的方法名為 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法、減法
>> << 右移,左移運(yùn)算符
& 位 'AND'
^ | 位運(yùn)算符
<= < > >= 比較運(yùn)算符
<> == != 等于運(yùn)算符
= %= /= //= -= += *= **= 賦值運(yùn)算符
is is not 身份運(yùn)算符
in not in 成員運(yùn)算符
not and or 邏輯運(yùn)算符

以下實(shí)例演示了 Python 所有運(yùn)算符優(yōu)先級(jí)的操作:

a = 20
b = 10
c = 15
d = 5

e = (a + b) * c / d  # ( 30 * 15 ) / 5
print "(a + b) * c / d 運(yùn)算結(jié)果為:", e

e = ((a + b) * c) / d  # (30 * 15 ) / 5
print "((a + b) * c) / d 運(yùn)算結(jié)果為:", e

e = (a + b) * (c / d)  # (30) * (15/5)
print "(a + b) * (c / d) 運(yùn)算結(jié)果為:", e

e = a + (b * c) / d  # 20 + (150/5)
print "a + (b * c) / d 運(yùn)算結(jié)果為:", e

輸出如下:

(a + b) * c / d 運(yùn)算結(jié)果為: 90
((a + b) * c) / d 運(yùn)算結(jié)果為: 90
(a + b) * (c / d) 運(yùn)算結(jié)果為: 90
a + (b * c) / d 運(yùn)算結(jié)果為: 50
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容