標籤:
DLL檔案即動態連結程式庫檔案,是一種可執行檔,它允許程式共用執行特殊任務所必需的代碼和其他資源。打不開,不過可以使用反組譯碼;PYD是一種PYTHON動態模組。實質上還是dll檔案,只是改了尾碼為PYD,pyd: 擴充模組,一般用C或C++編寫,其實可以說是一種更優秀的D語言編寫的。
源自:http://my.oschina.net/renwofei423/blog/17404
通常認為,Python是一種解釋性的語言,但是這種說法是不正確的,實際上,Python在執行時,首先會將.py檔案中的原始碼編譯成
Python的byte code(位元組碼),然後再由Python Virtual Machine來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET
是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更進階的
Virtual Machine。這裡的進階並不是通常意義上的進階,不是說Python的Virtual Machine比Java或.NET的功能更強大,更拽,而是說
和Java或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這麼說,Python的Virtual Machine是一種抽象層次
更高的Virtual Machine。
Python應該提供一種機制,儲存編譯的中間結果,即byte code,或者更準確地說,儲存PyCodeObject。事實上,Python確實提供
了這樣一種機制——Pyc檔案。
在執行一個.py檔案中的原始碼之後,Python並不會自動產生與該.py檔案對應的.pyc檔案。我們需要自己觸發Python來建立pyc檔案。
下面我們提供一種使Python建立pyc檔案的方法,其實很簡單,就是利用Python的import機制。
在Python啟動並執行過程中,如果碰到import abc,這樣的語句,那麼Python將到設定好的path中尋找abc.pyc或abc.dll檔案,如果沒有這
些檔案,而只是發現了abc.py,那麼Python會首先將abc.py編譯成相應的PyCodeObject的中間結果,然後建立abc.pyc檔案,並將中間
結果寫入該檔案。接下來,Python才會對abc.pyc檔案進行一個import的動作,實際上也就是將abc.pyc檔案中的PyCodeObject重新在內
存中複製出來
下面是與python相關的副檔名,源自:http://proupy.com/news/33
首先是我們最常見的.py檔案。以.py副檔名的檔案是原始碼檔案,由python.exe解釋,可在控制台下運行。當然也可以用文字編輯器進
行修改。
接下來介紹的是.pyc檔案。以.pyc為副檔名的是python的編譯檔案。.pyc檔案是不能夠用文字編輯器之類的進行編輯的,但是同樣它的
優點在於.pyc檔案的執行速度快於.py檔案。至於為什麼要有.pyc檔案,這個需求太明顯了,因為py檔案是可以直接看到源碼的,如果
你是開發商業軟體的話,不可能把源碼也泄漏出去吧?所以就需要編譯為pyc後,再發布出去。
再接下來介紹的是.pyw檔案。很多使用過.pyc檔案的同學都知道,.pyc檔案執行的時候案頭會出現黑糊糊的視窗,有的時候這是十分難
看的。於是.pyw檔案就應運而生了。.pyw檔案與.pyc檔案本質上沒有什麼區別,只是.pyw執行的時候不會出現黑視窗。.pyw 格式主要
是被設計來運行開發完成的純圖形介面程式的。 純圖形介面程式的使用者不需要看到控制台視窗。值得一提的是,開發純圖形介面程式
的時候,你可以暫時把 .pyw 改成 .py , 以便運行時能調出控制台視窗,看到所有錯誤資訊,方便進行修改。
接下來介紹的是.pyo檔案。pyo是最佳化編譯後的程式。 python -O 源檔案即可將來源程式編譯為pyo檔案。同樣.pyo檔案也是不能用文
本編輯器編輯的。
最後介紹的是.pyd檔案。.pyd檔案並不是使用python編寫而成,.pyd檔案一般是其他語言編寫的python擴充模組。(之前又在網上看到
過有關解釋,.pyd檔案是用D語言按照一定的格式編寫,並處理成二進位檔案。那麼什麼是D語言呢??它是c/c++的綜合進化版,不僅
具有二者的全部優點,而且整體效能更佳,但是其抽象程度高。)
python 檔案 .py .pyc .pyw .pyo .pyd