python的運算子(與java的對比學習)
與java相比,少了自增、自減運算子。即python中沒有,i++、++i/i--、--i的·寫法
細節注意:and 和 or並不存在優先順序之分,程式是從左往右執行。
eg:在下面程式碼中:
username="root"
password="abc123"
b=username=="root" and password=="abc123" or 1>2 and 1==1
先判斷username=="root",結果為true,發現邏輯運算子為and,然後繼續往下判斷,password=“abc123”為真,發現邏輯運算子為or,此時就沒必要再往下判斷,b的結果就是true.
執行結果為:
賦值運算子
成員運算子
身份運算子
java沒有成員運算子,也沒有身份運算子。
在python中,is用於判斷兩個變數是否指向同一個物件,==用於判斷引用變數的值是否相等。
容易聯想到java中的“==”,如果“==”兩邊是基本資料型別,則比較值是否相等;如果“==”兩邊是引用型別,則比較地址值是否相等。
位運算子
對於按位取反,我們首先需要回顧一下原碼、反碼、補碼的知識
我們知道,計算機中的資料一律採用補碼來表示。優點:1.避免了0的編碼+0和-0. 2.提高了效率。
原碼:原碼在是數值前面增加了一位符號位,正數符號位為0,負數符號位為1,其餘為表示數值的大小。原碼不能直接參與運算,可能會出錯。在數學中,1+(-1)=0,而在二進位制中,00000001+10000001=10000010換算成十進位制為-2,顯然出錯了。所以原碼不能直接進行位運算,必須和其它位分開,但是這樣做進增加了硬體的開銷。還有一個缺點就是在資料用原碼錶示時,存在+0和-0,顯然這不合理。
反碼:正數的反碼就是原碼,負數的反碼就是除開符號位,對所有位取反。
補碼:正數的補碼與原碼相同,負數的補碼由其反碼最低位加1得到。