文章目錄
- 1. 算數運算符
- 1.1 //整除
- 1.2 %取模
- 1.3 **冪
- 2. 賦值運算符
- 3. 位運算符
- 3.1 &(按位與)
- 3.2 |(按位或)
- 3.3 ^(按位異或)
- 3.4 ~(按位取反)
- 3.5 <<(左移)
- 3.6 >>(右移)
- 4. 比較運算符
- 5. 邏輯運算符
- 5.1 and
- 5.2 or
- 5.3 not
- 6. 成員運算符
- 6.1 in
- 6.2 not in
- 7. 身份運算符
1. 算數運算符
算術運算符有:+、-、*、/、//、%、**,依次對應加、減
乘、除、整除、模、冪。
其中前四個就和數學中一樣,我們來說一下后面三個。
1.1 //整除
//就和它的名一樣,整除,就是運算后只會取整數部分。例如10除3它的結果就會等于3,舍去的余數部分。
代碼:
a = 10
b = 3
print(a // b)
運行結果:
1.2 %取模
%就是取模,就是取余的意思,和//對立,//只要整數部分,那%就是只要余數部分。例如:10%3結果就是1。
a = 10
b = 3
print(a % b)
1.3 **冪
** 就是冪的意思。例如:2 ** 3就相當于2的3次方,結果為8,2 ** 4就相當于2的4次方,結果為16。
a = 2
b = 4
print(a ** b)
2. 賦值運算符
賦值運算符有:=、+=、-=、*=、/=、//=、%=,首先等=就是等號的意思,而后面的加等,減等……用起來其實都是一樣的,這里演示一個大家應該就懂了。
代碼演示:
a = 1
print(a)
a += 2 # 相當于a = a + 2,原本的a等于1,現在加上2,那么就等于3了
print(a) # 打印結果為3
后面的-=、*=、/=、//=、%=的應用和+=規則相同。
3. 位運算符
位運算符有:&、|、^、~、<<、>>, 依次是按位與、按位或、按位異或、按位取反、左移、右移。
位運算符用于對整數的二進制表示進行直接操作,就是運算時不是直接對變量進行運算,而是先轉換為二進制,對二進制整數操作。
3.1 &(按位與)
對每一位執行邏輯與操作。如果兩個相應的二進制位都為1,則該位的結果為1;否則為0。
a = 60 # 0011 1100
b = 13 # 0000 1101
c = a & b # 0000 1100
print(c) # 輸出: 12
3.2 |(按位或)
對每一位執行邏輯或操作。如果兩個相應的二進制位中至少有一個為1,則該位的結果為1;否則為0。
a = 60 # 0011 1100
b = 13 # 0000 1101
c = a | b # 0011 1101
print(c) # 輸出: 61
3.3 ^(按位異或)
對每一位執行邏輯異或操作。如果兩個相應的二進制位不相同,則該位的結果為1;如果相同,則為0。
a = 60 # 0011 1100
b = 13 # 0000 1101
c = a ^ b # 0011 0001
print(c) # 輸出: 49
3.4 ~(按位取反)
對數的二進制表示進行取反操作。即將0變為1,將1變為0。需要注意的是,取反后的結果通常是補碼形式表示的負數(對于有符號整數而言),這取決于具體的位數和系統架構。
a = 60 # 0011 1100
b = ~a # 1100 0011...(取決于整數類型,這里假設是32位)
# 注意:直接打印b會得到一個負數,因為Python使用補碼表示負數
print(b) # 輸出: -61(假設是32位系統)
3.5 <<(左移)
數的各二進制位全部左移若干位,由右側的數指定移動的位數,高位丟棄,低位補0。
a = 60 # 0011 1100
b = a << 2 # 0011 1100 -> 1111 0000
print(b) # 輸出: 240
3.6 >>(右移)
數的各二進制位全部右移若干位,由右側的數指定移動的位數。對于無符號數,高位補0;對于有符號數,則取決于具體的系統,可能是補0或補1(即算術右移)。Python中的整數是有符號的,但右移操作在Python 3.x中總是用0來填充高位。
a = 60 # 0011 1100
b = a >> 2 # 0011 1100 -> 0000 1111
print(b) # 輸出: 15
4. 比較運算符
比較運算符有:==、!=、<、>、<=、>=, ==就是數學中=的意思,但是并不能直接寫=,前面我們也知道了=是賦值的意思,!=就是不等于的意思,后面相信就不用介紹了。
print(1 == 1) # 正確的,結果true
print(1 != 1) # 錯誤的,結果false
5. 邏輯運算符
邏輯運算符有:and、or、not三種,依次是邏輯與運算符、邏輯或運算符、邏輯非運算符,使用起來就和數學中的與或非一樣。
5.1 and
邏輯與運算符。如果它的兩個操作數都是真(True),則整個表達式的結果為真(True)。如果任一操作數為假(False),則結果為假(False)。
print(True and True) # 輸出: True
print(True and False) # 輸出: False
print(False and True) # 輸出: False
print(False and False) # 輸出: False
5.2 or
邏輯或運算符。如果它的兩個操作數中至少有一個為真(True),則整個表達式的結果為真(True)。如果兩個操作數都是假的(False),則結果為假(False)。
print(True or True) # 輸出: True
print(True or False) # 輸出: True
print(False or True) # 輸出: True
print(False or False) # 輸出: False
5.3 not
邏輯非運算符。用于反轉其操作數的布爾值。如果操作數是真(True),則結果為假(False)。如果操作數是假(False),則結果為真(True)。
print(not True) # 輸出: False
print(not False) # 輸出: True
6. 成員運算符
成員運算符有:in、not in兩種。用于檢查某個值是否存在于某個集合中(比如列表、元組、字符串、集合或字典的鍵中)。
集合后面會講,這里就簡單使用一樣,懂in和not in什么意思就可以。
6.1 in
如果指定的值在指定的序列中(或作為字典的鍵),則返回True;否則返回False。
# 列表
my_list = [1, 2, 3, 4, 5]
print(3 in my_list) # 輸出: True
print(6 in my_list) # 輸出: False # 字符串
my_str = "hello"
print('e' in my_str) # 輸出: True
print('z' in my_str) # 輸出: False # 字典(檢查鍵)
my_dict = {'a': 1, 'b': 2, 'c': 3}
print('a' in my_dict) # 輸出: True
print('d' in my_dict) # 輸出: False
6.2 not in
這個運算符是in的否定形式。如果指定的值不在指定的序列中(或不是字典的鍵),則返回True;否則返回False。
# 列表
my_list = [1, 2, 3, 4, 5]
print(6 not in my_list) # 輸出: True
print(3 not in my_list) # 輸出: False # 字符串
my_str = "hello"
print('e' not in my_str) # 輸出: False
print('z' not in my_str) # 輸出: True # 字典(檢查鍵)
my_dict = {'a': 1, 'b': 2, 'c': 3}
print('a' not in my_dict) # 輸出: False
print('d' not in my_dict) # 輸出: True
7. 身份運算符
身份運算符 :is、is not 用于測試兩個對象是否相同(即,它們是否指向同一個對象或內存地址)。對象內存地址這個概念后面講,大家是不是覺得好多后面講,這也是沒辦法的嘛,先簡單后難,這些難點的后面會詳解的,大家不用擔心,不會影響前面的學習的。
a = [1, 2, 3]
b = a
c = [1, 2, 3] print(a is b) # 輸出: True,因為 a 和 b 指向同一個列表對象
print(a is c) # 輸出: False,因為雖然 a 和 c 的內容相同,但它們是不同的對象
print(a == c) # 輸出: True,因為 a 和 c 的內容相同 x = 256
y = 256
z = id(x)
w = id(y) print(x is y) # 輸出可能取決于Python實現和對象類型,但對于小整數(如-5到256之間的整數),Python通常會緩存這些值,因此這里很可能輸出 True
print(z == w) # 輸出: True,因為id()函數返回對象的唯一標識符(內存地址),這里x和y指向同一個對象 # 示例使用 is not
print(a is not b) # 輸出: False,因為a和b是同一個對象
print(a is not c) # 輸出: True,因為a和c不是同一個對象