天天看點

python中的運算符大全

運算符:運算符用于執行程式代碼運算,會針對一個以上操作數項目來進行運算

python支援的運算符:

  1. 算術運算符
  • 兩個對象相加或者相同資料類型的拼接 +

    1+2+False+True

    print(“234”+“123”)

    print([1,2,3,45]+[1,“234”,True,3.14])

    》》》

    4

    “234123”

    [1, 2, 3, 45, 1, ‘234’, True, 3.14]

  • 一個數減去另一個數 -

    1-True

    》》》

  • 兩個數相乘或是傳回一個被重複若幹次的字元串*

    5*False

    print(‘asjkfdhsk我’*2)

    》》》

    asjkfdhsk我asjkfdhsk我

  • 除法/

    3.556/5522

    》》》

    0.0006439695762404926

    5/False

    》》》

    Traceback (most recent call last):

    File “<pyshell#1>”, line 1, in

    ZeroDivisionError: division by zero

    6/3

    》》》

    2.0

  • 傳回除法的餘數%

    [5%2,‘widjj’]

    》》》

    [1, ‘widjj’]

  • 傳回x的y次幂**

    2**6

    》》》

    64

  • 取整除 - 向下取接近除數的整數//

    9//2

    -9//2

    》》》

    4

    -5

2.比較運算符

  • 等于 - 比較對象是否相等==
  • 不等于 - 比較兩個對象是否不相等!=
  • 大于 - 傳回x是否大于y >
  • 小于 - 傳回x是否小于y <
  • 大于等于 - 傳回x是否大于等于y >=
  • 小于等于 - 傳回x是否小于等于y <=

3.指派運算符

****= 簡單的指派運算符 c = a + b 将 a + b 的運算結果指派為 c

+= 加法指派運算符 c += a 等效于 c = c + a

-= 減法指派運算符 c -= a 等效于 c = c - a

*= 乘法指派運算符 c *= a 等效于 c = c * a

/= 除法指派運算符 c /= a 等效于 c = c / a

%= 取模指派運算符 c %= a 等效于 c = c % a

**= 幂指派運算符 c = a 等效于 c = c ** a

//= 取整除指派運算符 c //= a 等效于 c = c // a

4.位運算符

按位運算符是把數字看作二進制來進行計算的

python中的運算符大全
a=60#0011 1100
b=13#0000 1101
print(a&b)
print(a|b)
print(a^b)
print(~a)
print(a<<2)
print(a>>2)
           
12#0000 1100
61#0011 1101
49#0011 0001
-61#1100 0011
240#1111 0000
15#0000 1111
           

5.邏輯運算符

python中的運算符大全
a=5
b=7
if (a and b):
    print("a和b都為True")
else:
    print("a和b至少有一個為假")
a=0
if (a and b):
    print("a和b都為True")
else:
    print("a和b至少有一個為假")在這裡插入代碼片
           
a和b都為True
a和b至少有一個為假
           

**python 中的 and 從左到右計算表達式,若所有值均為真,則傳回最後一個值,若存在假,傳回第一個假值;

or 也是從左到有計算表達式,傳回第一個為真的值;如果都為真或假,則傳回最後一個值

在Python中,None、任何數值類型中的0、空字元串“”、空元組()、空清單[]、空字典{}都被當作False,還有自定義類型,如果實作了 __ nonzero __ () 或 __ len __ () 方法且方法傳回 0 或False,則其執行個體也被當作False,其他對象均為True

print(1 and 0)
print(1 and True)
print(True and 1)
print(False and 0)
print(0 and False)
print(False or 0)
print(0 or False)
print(-1 or 0)
print(0 or 1)
print(not 0)
print(not '')
print(not 1)
# and:前面為假(0 或者 False)則表達式為假,否則表達式為後面的值;
# or:前面為真(非 0 或者非 False)則表達式為前面的值,否則表達式為後面的值;
           
0
True
1
False
0
0
False
-1
1
True
True
False

           
a=0
b=7
if not a:
    print("a和b都為True")
else:
    print("a和b至少有一個為假")
if not b:
    print("a和b都為True")
else:
    print("a和b至少有一個為假")
           
a和b都為True
a和b至少有一個為假
           
print(1 and 2 or not 1)
print(1 and not 2 or False)
print(not True  and False or False)
print(not False or True and False)
print(True or False and not False)
print(False or not False and 0)
#優先級:not>and>or
           
2
False
False
True
True
0
           

6.成員運算符

python中的運算符大全
a='a'
b='ab'
print(a in b)
print(a not in b)
c=[a,b]
print('a' in c)
print(a not in c)
           
True
False
True
False
           

7.身份運算符

python中的運算符大全
a=5
b=6
c=5
print(id(a))
print(id(b))
print(id(c))
print(a is b)
print(a is c)
print(b is not c)
a=a+1
print(id(a))#變得記憶體位址與b一樣了
print(a is not b)
#python 中,變量是以内容為基準而不是像 c 中以變量名為基準,是以隻要你的數字内容是5,
# 不管你起什麼名字,這個變量的 ID 是相同的,同時也就說明了 python 中一個變量可以以多個名稱通路
           
1468033920
1468033952
1468033920
False
True
True
1468033952
False
           

上述所說的在腳本式程式設計環境類似pycharm中沒有問題。但是在互動式環境中,編譯器會有一個小整數池的概念,會把(-5,256)間的數預先建立好,而當a和b超過這個範圍的時候,兩個變量就會指向不同的對象了,是以位址也會不一樣

>>> a=1000
>>> b=1000
>>> id(a)
2138803203856
>>> id(b)
2138803203824
           

is 判斷兩個對象是否為同一對象, 是通過 id 來判斷的; 當兩個基本類型資料(或元組)内容相同時, id 會相同, 但并不代表 a 會随 b 的改變而改變。

a=10000
b=10000
list1=['加油','Mr Xiao','0527',a]
list2=['Fighting','肖先生','0527',b]
print(list1[3] is list2[3])
list1=('加油','Mr Xiao','0527',a)
list2=('Fighting','肖先生','0527',b)
print(list1[3] is list2[3])
list1={10:'加油',11:'Mr Xiao',12:'0527',13:a}
list2={10:'Fighting',11:'肖先生',12:'0527',13:b}
print(list1[13] is list2[13])
           
True
True
True
           

8.運算符優先級

python中的運算符大全
a=60#0011 1100
b=13#0000 1101
print(~a-4+1)
print(a|b&a^b)
           
-64
61