剛接觸python的時候就知道,python有乙個缺點,那就是執行速度比較慢,因為python是一門解釋型語言。
那麼,什麼是解釋型語言呢?
其實簡而言之就是:python不像c語言那樣,在執行之前需要編譯那麼麻煩,它可以直接執行。
而直接執行的後果就是,你邊執行邊「編譯」,這裡的編譯叫做解釋,有一種專門的東西叫做python直譯器,解釋一句,就把指令告訴電腦一句,所以相比較於c語言這種編譯型語言,就比較慢了。
但是,python真的是解釋型的語言嗎?
今天我做東西,發現自己的專案目錄裡面多出來乙個資料夾,__pycache__資料夾,裡面有乙個.pyc檔案,本著好學的心,就去查了一下,到底是個什麼東西。後來發現,它是python檔案執行之後,編譯後的結果。c是compiled(編譯)的縮寫。
所以這個.pyc檔案是怎麼形成的呢?
這裡我們就要簡單地說說python程式的執行過程了。
在說執行過程之前,我們先來說兩個概念,pycodeobject和pyc檔案。
我們在檔案管理系統中看到的pyc自然不必多說,而其實pycodeobject則是python程式執行之後真正編譯成的結果。我們先簡單知道就可以了,繼續向下看。
當python程式執行時,其實會先編譯,編譯的結果則是儲存在位於記憶體中的pycodeobject中,當python程式執行結束時,python直譯器則將pycodeobject寫回到pyc檔案中。
當python程式第二次執行時,首先程式會在硬碟中尋找pyc檔案,如果找到,先對.pyc檔案和.py檔案的最近一次的修改時間進行判斷,如果.pyc檔案的修改時間晚於.py檔案,說明.py檔案中的源**未修改過,則直接載入,否則就重複上面編譯的過程。
所以我們應該這樣來定位pycodeobject和pyc檔案,我們說pyc檔案其實是pycodeobject的一種持久化儲存方式。
所以呢,我們應該這樣來描述python,python是一門先編譯後解釋的語言。
人生苦短,我用python!
編譯型語言與解釋型語言
計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其轉換成計算機語言,也就是機器碼。而這種轉換的方式有兩種 1 編譯 2 解釋 由此高階語言也分為編譯型語言和解釋型語言。一 編譯型語言 使用專門的編譯器,針對特定的平台...
編譯型語言與解釋型語言
計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其轉換成計算機語言,也就是機器碼。計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其...
解釋型語言與編譯型語言
不同語言開發的程式要想執行,必須先變成機器語言,這是就需要編譯器 不同編譯器將不同語言編譯為機器可以識別的語言 使用編譯器編譯的叫編譯型語言,使用直譯器解釋的是解釋型語言 編譯型語言,如c c 程式設計師編寫好源 後統一交給編譯器編譯成機器語言,並生成可執行檔案,之後雙擊可執行檔案使用。解釋型語言,...