python 对象的异或运算符_python的运算符
算數(shù)運算符
算數(shù)運算符主要用作于計算機的算數(shù)運算
種類符號作用+加法、字符串的拼接
-減法
*乘法、字符串的重復(fù)
/除法
//地板除(除法)
%取余(除法)
**冪運算
+#?數(shù)字類型的加法運算
print(1?+?1)????????????????#?2
print(False?+?1)????????????#?1
print(0j?+?1)???????????????#?(1+0j)
#?字符串的拼接
var1?=?'hello'
var2?=?'motherland'
print(var1?+?'?'?+?var2)????#?hello?motherland
*#?數(shù)字類型的乘法運算
print(1?*?1)????????????????#?1
print(False?*?1)????????????#?0
print(0j?*?1)???????????????#?0j
#?字符串的重復(fù)
var1?=?'hello'
print(var1)?????????????????#?hello
print(var1?*?2)?????????????#?hellohello
print(var1?*?3)?????????????#?hellohellohello
/#?數(shù)字類型的除法運算,結(jié)果總是小數(shù),至少返回一位小數(shù)
print(1?/?1)????????????????#?1.0
print(False?/?1)????????????#?0.0
#?print(False?/?False)????????#?除數(shù)不能為0
print(10?/?5)???????????????#?2.0
print(10?/?3)???????????????#?3.3333333333333335
print(10?/?2.25)????????????#?4.444444444444445
//#?數(shù)字類型的除法運算
#?//?的運算結(jié)果只有在除數(shù)或者是被除數(shù)為小數(shù)的時候才是小數(shù),并且永遠是一位小數(shù),小數(shù)位為0
print(1?//?1)????????????????#?1
print(100?//?5)??????????????#?20
print(10.9?//?1)?????????????#?10.0
print(10?//?1.5)?????????????#?6.0
print(10.5?//?1.1)???????????#?9.0
print(10.0?//?3)?????????????#?3.0
%#?不會將數(shù)除盡,求出除法中的余數(shù)
print(10?%?3)???????#?1
#?如果被除數(shù)和除數(shù)都是負數(shù),余數(shù)是正常余數(shù)取反
#?如果除數(shù)是負數(shù),余數(shù)是正常余數(shù)+除數(shù)
#?如果被除數(shù)是負數(shù),余數(shù)就是第二種情況的取反
print(10?%?3)???????#?1
print(-10?%?-3)???????#?-1
print(10?%?-3)???????#?-2
print(-10?%?3)???????#?2
print(11?%?4)???????#?3
print(-11?%?-4)?????#?-3
print(11?%?-4)??????#?-1
print(-11?%?4)??????#?1
print(15?%?6)???????#?3
print(-15?%?-6)?????#?-3
print(15?%?-6)??????#?-3
print(-15?%?6)??????#?3
**#?求一個數(shù)的冪次方
print(2?**?1)???????#?2
print(2?**?2)???????#?4
print(2?**?3)???????#?8
print(2?**?4)???????#?16
-#?數(shù)字類型的減法運算
print(1?-?1)????????????????#?0
print(False?-?1)????????????#?-1
print(0j?-?1)???????????????#?(-1+0j)
比較運算符
概念比較兩個值是否相同,結(jié)果只會是布爾值,條件成立返回True,反之False;
可以比較任何類型的數(shù)據(jù);
python沒有向其它語言中一樣區(qū)分等于和絕對等于的概念,等于就是絕對等于,是區(qū)分數(shù)據(jù)類型的;
種類符號作用>大于
>=大于等于
<=小于等于
==等于
!=不等于print(1234?==?'1234')???????#?False
print(1234?==?1234)?????????#?True
賦值運算符
概念給某個數(shù)據(jù)賦予新的值
除了=之外的其它賦值運算符,都是在算數(shù)運算符的基礎(chǔ)上添加了=,使用的方法則和原有的意義基本相同,是將算數(shù)出來的結(jié)果替換原有的數(shù)據(jù)
比較兩個值是否相同,結(jié)果只會是布爾值,條件成立返回True,反之False;
python沒有其它語言的自增和自減概念;
種類符號作用=賦值
+=運算替換
-=運算替換
*=運算替換
/=運算替換
//=運算替換
%=運算替換
**=運算替換#?直接賦值
var?=?'msr'
print(var)??????#?msr
var?=?'hello'
print(var)??????#?hello
#?通過算數(shù)運算得出結(jié)果,然后替代原有的數(shù)據(jù)
var?*=?3
print(var)??????#?hellohellohello
成員運算符
作用
用于針對容器型數(shù)據(jù),查詢某個數(shù)據(jù)是否是容器當中的元素;返回布爾值,條件成立返回True,反之False;
種類符號作用in查詢的元素是否在容器當中
not in查詢的元素是否不在在容器當中
字符串#?只可以連續(xù)的元素,就是說不支持模糊查詢
var?=?'你是Java的大神,他是PHP的開發(fā)者,我是Python的小白。'
print('Java的大神'?in?var)?????????#?True
print('Python的小白'?not?in?var)???#?False
字典#?在字典當中只會判斷鍵,不會判斷值
var?=?{'及時雨':?'宋江',?'玉麒麟':?'盧俊義'}
print('及時雨'?in?var)??#?True
print('宋江'?in?var)??#?False
身份運算符
作用
檢測兩個數(shù)據(jù)在內(nèi)存當中是否是同一個值,返回布爾值
種類符號作用is是同一地址
is not不是同一地址
Python的內(nèi)存優(yōu)化整型:-5 ~~ 正無窮的范圍內(nèi)的數(shù)內(nèi)存地址相同
浮點型:非負數(shù)的內(nèi)存的地址相同
布爾型:同值內(nèi)存地址相同
復(fù)數(shù):實數(shù)+虛數(shù)的的格式永不相同
容器類型:只有字符串和空元組的情況相同intvar?=?100
strvar?=?'hello'
#?利用id()函數(shù)檢查是否是同一地址
res?=?id(intvar)?==?id(strvar)
print(res)??????#?False
#?使用身份運算符
res?=?intvar?is?strvar
print(res)??????#?fasle
邏輯運算符
作用
判斷運算符兩邊的布爾值,返回布爾值
種類符號作用特點and邏輯與:兩遍的數(shù)據(jù)都為真,返回True全真為真,一假則假
or邏輯或:兩遍的數(shù)據(jù)有一個為真,返回True全假為假,全假為假
not邏輯非:將后面的數(shù)據(jù)的邏輯值反轉(zhuǎn)真為假,假為真
and——邏輯與運算符兩遍的值都為真,返回真,其余情況返回假#?為真的概率低
res?=?True?and?True#?True
res?=?True?and?False#?False
res?=?False?and?True#?False
res?=?False?and?False#?False
or——邏輯與運算符兩遍的值都為假,返回假,其余情況返回真#?為假得概率低
res?=?True?or?True#?True
res?=?True?or?False#?True
res?=?False?or?True#?True
res?=?False?or?False#?False
not——邏輯非將左側(cè)的進行反轉(zhuǎn),真的轉(zhuǎn)為假,假的轉(zhuǎn)為真res?=?not?True#?False
res?=?not?False#?True
布爾值為假的十種情況還記得嗎???0 ? ? 0.0 ? ? ?0j ? ? ?False ? ? "" ? ? ?[] ? ? ?() ? ? ? set() ? ? {} ? ? ?None
邏輯短路True or 表達式
False and 表達式
在邏輯表達式中,or的特點是一真則真,所以True or首先是發(fā)現(xiàn)前面已經(jīng)有了真,所以or就無需再檢查后面的數(shù)據(jù)是真是假,直接返回前面的真,導(dǎo)致不在執(zhí)行后面的代碼,造成邏輯短路。
False and同理,and一假則假,所以當and前面出現(xiàn)假的時候,就不在需要知道后面的數(shù)據(jù)是真是假,直接返回假,造成邏輯短路。#?邏輯短路,不會執(zhí)行后面的print函數(shù)
True??or??print('hello?world')
False?and?print('hello?world')
#?沒有短路
False??or??print('hello?world')
True???and?print('hello?world')
邏輯運算符的優(yōu)先級() ? > ? not ? ?> ? ?and ? ? > ? ? or
和數(shù)學(xué)的運算一樣,要先運算括號內(nèi)的數(shù)據(jù)。
在多邏輯運算符的算數(shù)中,按照優(yōu)先級計算。0?or?6?and?not?9?and?(1?or?3)
#?按照優(yōu)先級依次運算,得出結(jié)果為False
位運算符
作用
位運算符用二進制數(shù)補碼進行運算
種類符號作用&按位與
|按位或
~按位非
^按位異或
<
>>右移位
&(按位與)
將數(shù)字的補碼中,同位數(shù)都為真的保留下來,組合成新數(shù)字19的補碼: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0000 ... 10011
15的補碼: ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0000 ... 01111
同位數(shù)都為真的保留下來: ?0000 ... 00011 ?=> ?3print(15?&?19)
|(按位或)
將數(shù)字的補碼中,同位數(shù)只要有一個為真就保留下來,組合成新數(shù)字19的補碼: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0000 ... 10011
15的補碼: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0000 ... 01111
同位數(shù)一個為真的保留下來: ?0000 ... 11111 ?=> ?31print(15?|?19)
^(按位異或)
將數(shù)字的補碼中,同位數(shù)相同返回假,不同返回真,組合成新數(shù)字19的補碼: ? ? ? ? ? ? ? ? ? ? 0000 ... 10011
15的補碼: ? ? ? ? ? ? ? ? ? ? 0000 ... 01111
同位數(shù)不同的返回真: ?0000 ... 11100 ?=> ?28print(15?^?19)
<
整個數(shù)字向左移位,原位補0,組合成新數(shù)字
左移位相當于做乘法,左移n位,就相當于乘 2 的n次冪19的補碼:0001 ?0011
左移1位: ?0010 ?0110 ?=> ?38print(19?<
>>(右移位)
整個數(shù)字向右移位,原位補0,溢出消失,組合成新數(shù)字
右移位相當于做除法,左移n位,就相當于除以 2 的n次冪19的補碼:0001 0011
右移1位: ?0000 1001 ? => ?9print(19?>>?1)
~ 按位非
按位取反,包括符號位。
公式:-(n + 1)十進制數(shù):19
原碼: ? ?0001 0011
反碼: ? ?0001 0011
補碼: ? ?0001 0011(先得到一個數(shù)的補碼)
按位非:1110 1100(按位非,包括符號位在內(nèi)的全部取反)
補碼: ? ?1110 1100(結(jié)果還是補碼)
取反: ? ?1001 0011
原碼: ? ?1001 0100 (根據(jù)這個補碼還原的原碼)
十進制數(shù):-20-(19 + 1) = -20print(~19)
運算符總結(jié):
運算符種類算術(shù)運算符: ? ? ?+ ? ? ?- ? ? ?* ? ? ?/ ? ? ?// ? ? ?% ? ? ?**
比較運算符: ? ? ?> ? ? ?< ? ? ?>= ? ? ?<= ? ? ?== ? ? ?!=
賦值運算符: ? ? ?= ? ? ?+= ? ? ?-= ? ? ?*= ? ? ?/= ? ? ?//= ? ? ?%= ? ? ?**=
成員運算符: ? ? ?in ? ? 、 ?not in
身份運算符: ? ? ?is ? ? 、 ?is not
邏輯運算符: ? ? ?and ? 、 ? or ?、 ? ?not
位運算符: ? ? ? ? ?& ? ? ?| ? ? ?^ ? ? ?~ ? ? ?<< ? ? ?>>
運算符優(yōu)先級
權(quán)重從小之下當多種運算符混合使用:
算數(shù) ? ? ?> ? ? ?位 ? ? ?> ? ? ?比較 ? ? ?> ? ? ?身份 ? ? ?> ? ? ?成員 ? ? ?> ? ? ?邏輯 ? ? ?> ? ? ?賦值
一元運算符 ? ? ?> ? ? ?二元運算符
一元運算符:同一時間只操作一個值,比如按位非(~19)、邏輯非(not True)
二元運算符:同一時間操作兩個值,多數(shù)是這樣的,比如冪運算(2 ** 3)、邏輯與(True and False)
算數(shù)運算符:
冪運算 ? ? ?> ? ? ?乘除 ? ? ?> ? ? ?加減
位運算符:
按位非 ? ? ?> ? ? ?左右移 ? ? ?> ? ? ?按位與 ? ? ?> ? ? ?按位異或 ? ? ?> ? ? ?按位或
邏輯運算符:
() ? ? ?> ? ? ?not ? ? ?> ? ? ?and ? ? ?> ? ? ?or
賦值運算符:
= 最小
小經(jīng)驗
這是我的一點心得:
寫出機器看得懂的代碼是行業(yè)門欖,質(zhì)量高的代碼是行業(yè)的水準,讓人看得懂的代碼是行業(yè)的標桿。一個優(yōu)秀的編程工作者寫的代碼會看起來更加的直觀。
在編寫復(fù)雜的運算式的時候要注意盡量的讓代碼直觀,比如可以使用括號。下面的兩行運算式的結(jié)果一樣,但是給人的截然不同。#?你也可以試著根據(jù)運算符優(yōu)先級?推算一下結(jié)果
res?=?5?+?5?<
print(res)
res?=?(5+5)?<
print(res)
總結(jié)
以上是生活随笔為你收集整理的python 对象的异或运算符_python的运算符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql设置定位慢查询_mysql优化
- 下一篇: Julia与R/Python/MATLA