簡介
解釋性、交互式、面向對象語言。
特點
易于學習:python有較少的關鍵字,結構簡單,和一個明確定義的語法。(關鍵字指語言中預留的,有一些特殊含義的一些詞)
?易于閱讀:python代碼定義的更清晰。
?易于維護:源代碼相當容易維護。
?一個廣泛的標準庫:python的最大優勢之一是豐富的庫,跨平臺的,在Unix、windows? ? ? ? ? ? ? ?和Macintosh兼容很好。
?互動模式:互動模式的支持,可以從終端輸入執行代碼并獲得結果的語言,互動的測試? ? ? ? ? ? ?和調試代碼片段。
可移植:基于開放的源代碼特性,python已經被移植(也就是使其工作)到許多平臺。
可擴展:如果需要一段運行很快的關鍵代碼,或者是想要編寫一些不開放的算法,可以? ? ? ? ? ? ?使用C或C++完成那部分程序,然后從你的python程序中調用。
數據庫:python提供所有主要的商業數據庫的接口。
GUI編程:python支持GUI可以創建和移植到許多系統調用。
可嵌入:可以將python嵌入到C或C++程序,讓你的程序的用戶獲得“腳本化”的功能。
缺點:運行速度慢、代碼不能加密。
第一章? 數據存儲
推薦一個文本編輯器:subline(基本上大多數的語言都能編寫和執行)
1.為什么使用計算機?? ? ? 存儲數據、計算數據
2.數據存在哪里?? ? ? 數據存儲在內存里
3.為什么現在幾乎都用64位的操作系統而不用32位的操作系統了?? ? ? 由于內存的不斷增長,內存用于存儲數據,但是之后還會涉及到取數據,而32位的操作系統,最大的尋址空間是三G多,而現在大多都是4G、8G的內存,就會導致后面的數據無法取到。
4.數據如何在內存里存儲的?? ? ?首先弄明白怎么存儲數字(例如:10)。
內存:內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存(Memory)也被稱為內存儲器,其作用是用于暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。只要計算機在運行中,CPU就會把需要運算的數據調到內存中進行運算,當運算完成后CPU再將結果傳送出來,內存的運行也決定了計算機的穩定運行。 內存是由內存芯片、電路板、金手指等部分組成的。
將內存進行抽象:一個開關,有兩種狀態,開啟和關閉。一種狀態對應1,另一種狀態對應0。把八個開關放到一間房間里,這個房間稱為“一個字節”,一個開關代表“一位”。每個房間都有門牌號,看作“地址”。把無數個房間堆疊起來,組成摩天大廈。那么可以把摩天大廈看作“內存”。
內存相關單位:
1bit? ? ? ? ?8bit==一個字節? ? ? 1024字節==1K? ? ? 1024K==1M? ? ? 1024M==1G? ? ?1024G==1T
內存中以二進制形式存儲數據。
進制(二進制、八進制、十進制、十六進制)
二進制:0? 1? ? 逢二進一? ? ? ? ?0+0=0、0+1=1、1+1=10、11+1=100
八進制:0 1 2 3 4 5 6 7? ? ? ? 逢八進一? ? ?1+7=10、1+2=3
十進制:0 1 2 3 4 5 6 7 8 9? ? ? 逢十進一?
十六進制:0 1 2 3 4 5 6 7 8 9 a b c d e f? ? ? 逢十六進一? ? 1+f=10
十六進制作用:內存地址用十六進制表示。
進制轉換
十進制轉二進制:倒除法(除2取余法),余數逆序。
10(10)->1010(2)
二進制轉十進制:當前的數字,乘以2的位數次方,最后相加。
1010(2)->10(10)
0*2^0+1*2^1+0*2^2+1*2^3=0+2+0+8=10
八進制轉二進制:八進制數通過除2取余法,得到二進制數,對每個八進制為3個二進制,不足時在最左邊補零。(有個簡潔的8421法)
65(8)->110101(2)
二進制轉八進制:3位二進制數按權展開相加得到1位八進制數。(注意事項,3位二進制轉成八進制是從右到左開始轉換,高位不足時補0)。
十六進制轉二進制:十六進制數通過除2取余法,得到二進制數,對每個十六進制為4個二進制,不足時在最左邊補零。
a4-(16)>10100100(2)
二進制轉十六進制:取四合一。(注意事項,4位二進制轉成十六進制是從右到左開始轉換,高位不足時補0)。
數據存儲過程(例如想存數字10:10(10)->1010(2))
計算機存儲數據,首先必須知道這個值在內存中占幾個字節,然后先開辟內存空間(有的空間已經有數據,就最好不要用,以免將數據覆蓋),再存儲數據(存這個數據的二進制)。計算機開辟內存的最小單位是字節。在存儲數據時,用最高位表示符號,1表示負數,0表示正數。
想把數字10存到內存里,首先要在內存中開辟4個字節32位的空間,開辟萬空間之后,將10變成二進制的數,再將其放進去,此時才是將數據正真的存到了內存中去。但是只有4位。
00000000000000000000000000000001(高位補0)(正1)
10000000000000000000000000000001(-1)
思考:數據真的是這樣存的嗎?如果是,那么上面正10和-10相加應該等于0才對。但是事實并不是這樣。
變為了:10000000000000000000000000000010(-2)。說明并不是以這種形式存的,需要變一變。
想要知道到底是如何存的,需要知道以下三個概念:原碼、反碼、補碼。
原碼:規定了字節數,寫明了符號位,就得到了數據的原碼。例如:
+1的原碼就是上面的:00000000000000000000000000000001
-1的原碼就是:10000000000000000000000000000001
反碼:正數的反碼是其原碼;負數的反碼是其原碼的符號位不動,其他位取反。例如:
+1的反碼還是:00000000000000000000000000000001
?-1的反碼就是:11111111111111111111111111111110
補碼:正數的補碼與原碼相同;負數的補碼是其反碼加1。例如:
+1的補碼還是:00000000000000000000000000000001
-1的補碼就是:11111111111111111111111111111111
總結:數據的存儲是以其補碼形式存儲的。