1. 程式人生 > >python的運算子(與java的對比學習)

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得到。