本文內容是基于《看漫畫學Python:有趣、有料、好玩、好用(全彩版)》的學習筆記
文章導圖
文章導圖
1. 什么是運算符
運算符能夠把數據串聯起來,形成表達式,并計算返回結果
2. 算數運算符
能夠連接整數類型和浮點類型數據的運算符是算數運算符,分為一元運算符和二元運算符
(1) 一元運算符
一元運算符有:(正號)和
(減號)。
示例代碼如下:
num = 3
print(+num)
# 3
print(-num)
# -3
(2) 二元運算符
二元運算符如下表所示:
名稱 | 運算符 | 說明 | 示例 |
---|---|---|---|
加 | + | 左操作數和右操作數的和 | 1 + 1 = 2 |
減 | - | 左操作數和右操作數的差 | 1 - 1 = 0 |
乘 | * | 左操作數和右操作數的積 | 1 * 1 =1 |
除 | / | 左操作數除右操作數的商 | 4 / 2 = 2 |
取余 | % | 左操作數除右操作數的余數 | 5 % 2 = 1 |
冪 | ** | 左操作數的右操作數次冪 | 2 ** 3 = 8 |
整除 | // | 左操作數除右操作數的商取整數位 | 6 // 4 = 1 |
示例代碼如下:
num1 = 6
num2 = 4
print(num1 + num2)
# 10
print(num1 - num2)
# 2
print(num1 * num2)
# 24
print(num1 / num2)
# 1.5
print(num1 % num2)
# 2
print(num1 ** num2)
# 1296
print(num1 // num2)
# 1
3. 比較運算符
用于比較兩個表達式的大小的運算符是比較運算符,其返回結果為布爾類型數據。
兩個表達式的類型要能夠相互兼容,即進行隱式轉換。
比較運算符如下表所示:
名稱 | 運算符 | 說明 | 示例 |
---|---|---|---|
等于 | == | 左操作數等于右操作數時返回True,否則返回False | num1 == num2 |
不等于 | != | 左操作數不等于右操作數時返回True,否則返回False | num1 != num2 |
大于 | > | 左操作數大于右操作數時返回True,否則返回False | num1 > num2 |
小于 | < | 左操作數小于右操作數時返回True,否則返回False | num1 < num2 |
大于等于 | >= | 左操作數大于等于右操作數時返回True,否則返回False | num1 >= num2 |
小于等于 | <= | 左操作數小于等于右操作數時返回True,否則返回False | num1 <= num2 |
示例代碼如下:
# 等于 ==
print(3 == 3)
# True
print(3 == 4)
# False
# 不等于 !=
print(3 != 4)
# True
print(3 != 3)
# False
# 大于 >
print(3 > 4)
# False
print(6 > 4)
# True
# 小于 <
print(3 < 4)
# True
print(3 < 3)
# False
# 大于等于 >=
print(3 >= 4)
# False
print(3 >= 3)
# True
# 小于等于 <=
print(3 <= 3)
# True
print(3 <= 0)
# False
4. 邏輯運算符
用于對布爾型變量進行運算的運算符是邏輯運算符,其返回結果是布爾類型。
邏輯運算符如下表所示:
名稱 | 運算符 | 說明 | 示例 |
---|---|---|---|
邏輯非 | not | 取反,若操作數是True,則返回False;反之,若操作數是False,則返回True | not flag |
邏輯與 | and | 左操作數和右操作數都為True,則返回True,否則返回False | flag1 and flag2 |
邏輯或 | or | 左操作數和右操作數都為False,則返回False,否則返回True | flag1 or flag2 |
其中,邏輯與中有種特殊情況是短路與,當左操作數為False時,不再計算右操作數,直接返回False;邏輯或中有種特殊情況是短路或,當左操作數為True時,不再計算右操作數,直接返回True。
示例代碼如下:
# 邏輯非 not
print(not True)
# False
print(not False)
# True
# 邏輯與 and
print(True and True)
# True
print(False and False)
print(False and True)
print(True and False)
# 以上三種結果一致
# False
# 邏輯或 or
print(True or False)
print(False or True)
print(True or True)
# 以上三種結果一致
# True
print(False or False)
# False
5. 位運算符
用二進制單位進行運算的運算符是位運算符,其操作數和結果均為整數類型。
位運算符如下表所示:
名稱 | 運算符 | 說明 | 示例 |
---|---|---|---|
位反 | ~ | 將操作數的值按位取反 | ~ num |
位與 | & | 左操作數和右操作數按位進行位與運算 | num1 & num2 |
位或 | | | 左操作數和右操作數按位進行位或運算 | num1 | num2 |
位異或 | ^ | 左操作數和右操作數按位進行位異或運算 | num1 ^ num2 |
右移 | >> | 左操作數右移右操作數個位,高位用符號位補位 | num << 2 |
左移 | << | 左操作數左移右操作數個位,低位用0補位 | num >> 2 |
示例代碼如下:
# 十進制 2
num1 = 0b010
# 十進制 5
num2 = 0b101
print(~ num1)
# -3
print(~ num2)
# -6
print(num1 & num2)
# 0
print(num1 | num2)
# 7
print(num1 ^ num2)
# 7
print(num1 >> 2)
# 0
print(num2 >> 2)
# 1
print(num1 << 2)
# 8
print(num2 << 2)
# 20
6. 賦值運算符
算術運算符和位運算中的二元運算符有對應的賦值運算符。
賦值運算符如下表所示:
名稱 | 運算符 | 說明 | 示例 |
---|---|---|---|
加賦值 | += | 等價于先 + 后 = | num += num1 |
減賦值 | -= | 等價于先 - 后 = | num -= num1 |
乘賦值 | *= | 等價于先 * 后 = | num *= num1 |
除賦值 | /= | 等價于先 / 后 = | num /= num1 |
取余賦值 | %= | 等價于先 % 后 = | num %= num1 |
冪賦值 | **= | 等價于先 ** 后 = | num **= num1 |
整除賦值 | //= | 等價于先 // 后 = | num //= num1 |
位與賦值 | &= | 等價于先 & 后 = | num &= num1 |
位或賦值 | |= | 等價于先 | 后 = | num |= num1 |
位異或賦值 | ^= | 等價于先 ^ 后 = | num ^= num1 |
左移賦值 | <<= | 等價于先 << 后 = | num <<= 2 |
右移賦值 | >>= | 等價于先 >> 后 = | num >>= 2 |
7. 運算符的優先級
在位運算中,大體的優先級為:算術運算符 → 位運算符 → 關系運算符 → 邏輯運算符 → 賦值運算符
運算符的優先級如下表所示:
優先級 | 運算符 | 說明 |
---|---|---|
1 | () | 小括號 |
2 | ** | 冪 |
3 | ~ | 位反 |
4 | +, - | 正負號 |
5 | *, /, %, // | 乘、除、取余、整除 |
6 | +, - | 加、減 |
7 | <<, >> | 位移 |
8 | & | 位與 |
9 | ^ | 位異或 |
10 | | | 位或 |
11 | <, <=, >, >=, <>, !=, == | 比較 |
12 | not | 邏輯非 |
13 | and, or | 邏輯與、邏輯或 |