算數運算符主要用作于計算機的算數運算
符号
作用
+
加法、字元串的拼接
-
減法
*
乘法、字元串的重複
/
除法
//
地闆除(除法)
%
取餘(除法)
**
幂運算
比較兩個值是否相同,結果隻會是布爾值,條件成立傳回True,反之False;
可以比較任何類型的資料;
python沒有向其它語言中一樣區分等于和絕對等于的概念,等于就是絕對等于,是區分資料類型的;
>
大于
<
小于
\>=
大于等于
<=
小于等于
==
等于
!=
不等于
給某個資料賦予新的值
除了<code>=</code>之外的其它指派運算符,都是在算數運算符的基礎上添加了<code>=</code>,使用的方法則和原有的意義基本相同,是将算數出來的結果替換原有的資料
python沒有其它語言的自增和自減概念;
=
指派
+=
運算替換
-=
*=
/=
//=
%=
**=
用于針對容器型資料,查詢某個資料是否是容器當中的元素;傳回布爾值,條件成立傳回True,反之False;
in
查詢的元素是否在容器當中
not in
查詢的元素是否不在在容器當中
字元串
字典
檢測兩個資料在記憶體當中是否是同一個值,傳回布爾值
is
是同一位址
is not
不是同一位址
整型:-5 ~~ 正無窮的範圍内的數記憶體位址相同
浮點型:非負數的記憶體的位址相同
布爾型:同值記憶體位址相同
複數:實數+虛數的的格式永不相同
容器類型:隻有字元串和空元組的情況相同
判斷運算符兩邊的布爾值,傳回布爾值
特點
and
邏輯與:兩遍的資料都為真,傳回True
全真為真,一假則假
or
邏輯或:兩遍的資料有一個為真,傳回True
全假為假,全假為假
not
邏輯非:将後面的資料的邏輯值反轉
真為假,假為真
and——邏輯與
運算符兩遍的值都為真,傳回真,其餘情況傳回假
or——邏輯與
運算符兩遍的值都為假,傳回假,其餘情況傳回真
not——邏輯非
将左側的進行反轉,真的轉為假,假的轉為真
布爾值為假的十種情況還記得嗎???
0 0.0 0j False "" [] () set() {} None
True or 表達式 False and 表達式
在邏輯表達式中,or的特點是一真則真,是以True or首先是發現前面已經有了真,是以or就無需再檢查後面的資料是真是假,直接傳回前面的真,導緻不在執行後面的代碼,造成邏輯短路。
False and同理,and一假則假,是以當and前面出現假的時候,就不在需要知道後面的資料是真是假,直接傳回假,造成邏輯短路。
() > not > and > or
和數學的運算一樣,要先運算括号内的資料。
在多邏輯運算符的算數中,按照優先級計算。
位運算符用二進制數補碼進行運算
&
按位與
|
按位或
~
按位非
^
按位異或
<<
左移位
\>>
右移位
将數字的補碼中,同位數都為真的保留下來,組合成新數字
19的補碼: 0000 ... 10011 15的補碼: 0000 ... 01111 同位數都為真的保留下來: 0000 ... 00011 => 3
将數字的補碼中,同位數隻要有一個為真就保留下來,組合成新數字
19的補碼: 0000 ... 10011 15的補碼: 0000 ... 01111 同位數一個為真的保留下來: 0000 ... 11111 => 31
将數字的補碼中,同位數相同傳回假,不同傳回真,組合成新數字
19的補碼: 0000 ... 10011 15的補碼: 0000 ... 01111 同位數不同的傳回真: 0000 ... 11100 => 28
整個數字向左移位,原位補0,組合成新數字
左移位相當于做乘法,左移n位,就相當于乘 2 的n次幂
19的補碼:0001 0011 左移1位: 0010 0110 => 38
整個數字向右移位,原位補0,溢出消失,組合成新數字
右移位相當于做除法,左移n位,就相當于除以 2 的n次幂
19的補碼:0001 0011 右移1位: 0000 1001 => 9
按位取反,包括符号位。
公式:-(n + 1)
十進制數:19 原碼: 0001 0011 反碼: 0001 0011 補碼: 0001 0011 (先得到一個數的補碼) 按位非:1110 1100 (按位非,包括符号位在内的全部取反) 補碼: 1110 1100 (結果還是補碼) 取反: 1001 0011 原碼: 1001 0100 (根據這個補碼還原的原碼) 十進制數:-20 -(19 + 1) = -20
算術運算符: + - * / // % **
比較運算符: > < >= <= == !=
指派運算符: = += -= *= /= //= %= **=
成員運算符: in 、 not in
身份運算符: is 、 is not
邏輯運算符: and 、 or 、 not
位運算符: & | ^ ~ << >>
權重從小之下
當多種運算符混合使用:
算數 > 位 > 比較 > 身份 > 成員 > 邏輯 > 指派
一進制運算符 > 二進制運算符
一進制運算符:同一時間隻操作一個值,比如按位非(~19)、邏輯非(not True)
二進制運算符:同一時間操作兩個值,多數是這樣的,比如幂運算(2 ** 3)、邏輯與(True and False)
算數運算符:
幂運算 > 乘除 > 加減
位運算符:
按位非 > 左右移 > 按位與 > 按位異或 > 按位或
邏輯運算符:
() > not > and > or
指派運算符:
= 最小
這是我的一點心得:
寫出機器看得懂的代碼是行業門榄,品質高的代碼是行業的水準,讓人看得懂的代碼是行業的标杆。一個優秀的程式設計工作者寫的代碼會看起來更加的直覺。
在編寫複雜的運算式的時候要注意盡量的讓代碼直覺,比如可以使用括号。下面的兩行運算式的結果一樣,但是給人的截然不同。