python學習之運算符; 算術運算符; 比較運算符;位運算符; 邏輯運算符; 成員運算符; 身份運算符; ++ 或 -- 自運算符; is 和 ==; 數組的兩種賦值方式區別 ...
目錄
python學習之運算符
本篇文章說明python中的一些運算符,python版本號為python3.6,python2中的內容不再本篇文章內
1. 算術運算符
運算符 | 描述 | 實例 |
---|---|---|
+ |
兩個對象相加 | 10+20=30 |
- |
得到負數或是一個數減去另一個數 | 20-10=10 |
* |
兩個數相乘或是返回一個被重覆若幹次的字元串 | 2*3=6 或 'py'*3='pypypy' |
/ |
x除以y | 5/2=2.5 |
% |
取模,返回除法的餘數 | 5%3=2 |
** |
冪,返回x的y次冪 | 2**10=1024 |
// |
取整除,返回商的整數部分(向下取整) | 10//3=3 |
2. 比較運算符
運算符 | 描述 |
---|---|
== |
等於 - 比較對象是否相等 |
!= |
不等於 - 比較兩個對象是否不相等 |
<> |
不等於 - 比較兩個對象是否不相等 |
> |
大於 - 返回x是否大於y |
< |
小於 - 返回x是否小於y |
>= |
大於等於 - 返回x是否大於等於y。 |
<= |
小於等於 - 返回x是否小於等於y。 |
3.位運算符
運算符 | 描述 | 實例 |
---|---|---|
& |
按位與運算符 | 3&5=1 ,二進位解釋:011 & 101 = 001 |
| |
按位或運算符 | 3|5=7 ,二進位解釋:011 | 101 = 111 |
^ |
按位異或運算符 | 3^5=7 ,二進位解釋:011 ^ 101 = 110 |
~ |
按位取反運算符,~x 類似於 -x-1 |
~5 = -6 |
<< |
左移動運算符: 高位丟棄,低位補0。 | 4<<4=64 |
>> |
右移動運算符 | 128>>4=8 |
4. 邏輯運算符
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y |
布爾"與" 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 | 12 and 4 = 4 或 12 and False = False |
or | x or y |
布爾"或" 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 | 12 or 5 = 12 |
not | not x |
布爾"非" 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not 5 = False |
5. 成員運算符
運算符 | 描述 | 實例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否則返回 False。 | 's' in 'asdf' = True |
not in | 如果在指定的序列中沒有找到值返回 True,否則返回 False。 | 's' not in 'asdf' = False |
6. 身份運算符
運算符 | 描述 |
---|---|
is | is 是判斷兩個標識符是不是引用自一個對象x is y , 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False |
is not | is not 是判斷兩個標識符是不是引用自不同對象 x is not y , 類似id(a) != id(b) 。如果引用的不是同一個對象則返回結果 True,否則返回 False。. |
id() 函數用於獲取對象記憶體地址。
7.其他
1. 關於++ 或 -- 自運算符
因為在 Python 里的數值和字元串之類的都是不可變對象,對不可變對象操作的結果都會生成一個新的對象。
a = 1
print(id(a))
a += 1
print(id(a))
#輸出結果
1908042784
1908042816
在 C/java 之類的語言中,把a指向記憶體地址單元數據值由1改成了2。但是在Python中是完全不同的另一套機制。解釋器創建一個新的整數對象 2。然後把這個對象的地址再次分配給 a。
所以在 Python 中不可能出現C/java 之類那種單獨一行一個 i++,i-- 的。
2. is 和 ==
is 用於判斷兩個變數引用對象是否為同一個, == 用於判斷引用變數的值是否相等。
a is b 相當於 id(a)==id(b)。
3. 數組的兩種賦值方式區別
在python中給數組賦值的常用方法中有兩個不同的方式
# 第一種
b=a
# 第一種
b=a[:]
看起來都是一樣的,那麼他們之間有沒有什麼區別呢?當然,區別是有的。區別就是:前者傳遞引用;後者是拷貝。直接=
是引用賦值,引用原來的對象;而[:]
是重新推導,會生成新的對象。用代碼演示如下:
a = [1, 2, 3, 4]
b = a
c = a[:]
print(id(a))
print(id(b))
print(id(c))
#輸出結果
2294445187016
2294445187016
2294445993544