Python從入門到放棄(一):概論
一:Python特點
1.軟體質量
1.Python程式有很好的可讀性,一致性和軟體質量。
2.Python支援軟體開發的高階重用機制,例如面向物件等
2.提高開發者效率
1.python作為開發工具均以付出更少的精力完成更多的任務而脫穎而出。
3.可以定義為面向物件的指令碼語言。
4.有缺點,是不夠快
純python程式碼的執行速度介於傳統的編譯語言和傳統的解釋語言之間.
5.免費可移植
6.簡單可以和其他語言混合程式設計
二:python如何執行程式
1.python是一門程式語言,同時,python也是一個名為直譯器(shell)的軟體包(實際上,直譯器是程式碼與硬體之間的軟體邏輯層),也就是說,我們常常說python是一門程式語言,但是同時,我們寫好了python程式碼執行的時候,解釋程式碼的直譯器的名字也是叫python,語言和一個直譯器這個程式之間雖然叫一個名字,但是意義不要弄混淆了
2.Python安裝在機器上之後,它包含了一些最小化的元件:一個直譯器(shell)和支援的庫.無論怎樣,編寫的python程式碼需要在直譯器中執行.
3.從程式設計師的角度來說,一個Python程式僅僅是一個包含Python語句的文字檔案.
4.在本質上,python程式的執行有下面步驟
1.位元組碼編譯
程式執行的時候,Python內部(對使用者隱藏)會先將原始碼編譯成所謂的位元組碼的形式.
要是python程序在機器上面有寫入許可權.那麼他將程式的位元組碼儲存為一個以.pyc為副檔名的檔案.程式執行後,能夠在相應的工作檔案目錄下面看到這些檔案.下一次執行程式的時候,要是以前的原始碼沒有修改過的話,Python會自動載入.pyc檔案就不會再重新編譯一次原始檔.
要是python程序沒有寫入許可權.那麼程式還是可以執行.位元組碼在記憶體中生成.並且在程式結束後丟棄.
位元組碼檔案具有加速的作用.所以最好是保證在大型程式中能夠寫入;同樣,位元組碼也是分發程式的方法之一:要是python找到的都是.pyc檔案,那麼他也很樂意執行這個程式.
2.Python虛擬機器
一旦程式編譯成為位元組碼(或者位元組碼從已經存在的.pyc檔案載入),之後的位元組碼傳送到通常稱為python虛擬機器PVM上來執行.
PVM是Python的執行引擎.他通常表現為python系統的一部分.並且他是實際執行指令碼的元件.(但是事實上,這些都是對使用者隱藏的.)
5.執行程式碼的方式
1.互動模式
互動提示模式是根據使用者的輸入執行程式碼並且響應結果.但是他不會把程式碼儲存到一個檔案之中.在windows或者linux的控制檯下面輸入python,就進入了互動模式(首先要安裝了python)
當你對於一段python程式碼的執行有任何疑問的時候,馬上開啟互動命令列並且實驗程式碼,看看會發生什麼.注意:在互動模式下只能夠輸入python的命令而不能夠輸入系統的命令.互動模式下很多結果的顯示不需要列印語句.但是指令碼中的列印語句需要留意提示符的變換和複合語句.在互動模式中,用一個空行結束複合語句.意味著簡單的語句下只要一個回車會直接執行.而在複合語句下要按兩下空格)多行程式碼最好的處理方式就是先複製到一個.py檔案中.然後執行這個檔案.不要直接把很多行的語句直接複製到互動模式下面執行.
2.指令碼模式
1.普通指令碼(不帶#!)
寫一個檔案一字尾.py結尾
執行方式:Python +檔名
2.可執行指令碼(帶#!)
第一行是特定的: #!後面加上直譯器的路徑(不知道路徑的,可以通過which python命令來看一下直譯器的路勁在哪裡)檔案擁有可執行許可權(要是沒有執行許可權,用chmod +x 檔名為其賦予執行許可權),那麼這個指令碼就能夠直接執行了。
3.Unix env小技巧
我們知道,linux下面有一個env程式.可以通過系統的搜尋路徑的設定,定位某個東西.(要是不知道env在哪裡,用命令which env)
因為#!後面跟的是直譯器的路徑,我們經常直接在後面加上直譯器的路徑,但是要是把這個程式原封不動的發給別人,要是別人的機器上的python直譯器的路徑不是我們寫上去的路徑,那麼這個檔案將不能夠被正確執行.
所以,env的技巧將能夠搜尋python的位置,就算機器裝python的位置是不同的也沒有關係.
加上許可權之後直接執行就行了.
三.模組匯入和過載初步
1.概念
1.每一個以副檔名.py結尾的Python原始碼檔案都是一個模組,其他的檔案能夠通過匯入一個模組讀取這個模組的內容.(匯入的本質,就是載入另一個檔案,並且能夠讀取哪個檔案的內容.)
2.一個模組的內容通過這樣的屬效能夠被外部世界使用.
3.大的程式往往是以多個模組的形式出現.並且匯入了其他模組檔案的工具.其中一個模組檔案設計成主檔案,也就是頂層檔案,通過它,能夠執行整個程式.
2.操作
1.載入一個模組並且執行這個模組(***import語句)*
1.載入的時候加上模組名字就行,但是千萬不要加上副檔名.py
2.在互動介面下載入一個模組會自動執行這個模組
3.模組載入第一次的時候會執行,但是”不能夠”載入同一個模組兩次
如上圖,載入第一次的時候自動執行,然後載入第二次的時候就不運行了.因為匯入在python中是開銷很大的操作,系統預設只會匯入一次,第一次匯入後就不會再次匯入相同的了.(即使該檔案被改變.,…)
2.重新載入一個模組(reload()函式)
1.reload是一個函式,在imp標準庫模組中(python3.x)
2.Reload()函式希望獲得的引數是一個已經載入了的模組物件的名稱.
注意:
1.避免用import和reload啟動程式
3.模組顯要特性:屬性
從巨集觀的角度來說,模組扮演了一個工具庫的角色.從一般意義來說,模組往往就是變數名的封裝,被認作是名稱空間.在一個包中的變數名就是所謂的屬性.典型的應用中,匯入則得到了模組檔案中在頂層所定義的所有變數名.
例子
1.建立一個檔案a.py
2.可以通過兩種不同的方法獲得這個模組中的leo屬性
①import將模組作為一個整體載入
要使用的話:模組.屬性名
②From xxx import xxx
使用的話:直接用就行
注意:無論是使用import還是from的來進行匯入,模組檔案都會被執行.並且匯入的元件在頂層檔案中得到了變數名的讀取權.
4.使用exec執行模組檔案
1.Exec(open(“完整模組名”).read())內建函式呼叫
2.執行該模組且不載入該模組,相當於在該處貼上了該模組的程式碼,也是因為如此,有覆蓋前面定義過的同名變數的危險.(所以自己小心就行)