編程語言整體分覺得機器語言、彙編語言、高級語言:
機器語言:計算機硬件可以直接使用的編程語言,二進制的集合,屬於低級語言。
彙編語言:藉助符號代替機器指令,與機器指令對應,面向計算機硬件的,容易理解和記憶,屬於低級語言。
高級語言:與計算機硬件無關,其表達方式接近於所描述的問題,更易於掌握。編程
高級語言所編制的程序不能直接被計算機識別,必須通過轉換才能被執行,按轉換方式可將它們分爲兩類:
解釋類:
執行方式相似於咱們平常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,所以效率比較低,並且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器(想運行,必須先裝上解釋器),但這種方式比較靈活,能夠動態地調整、修改應用程序。
編譯類:
編譯是指在應用源程序執行以前,就將程序源代碼「翻譯」成目標代碼(機器語言),所以其目標程序能夠脫離其語言環境獨立執行(編譯後生成的可執行文件,是 CPU 能夠理解的二進制的機器碼組成的),使用比較方便、效率較高。但應用程序一旦須要修改,必須先修改源代碼,再從新編譯生成新的目標文件才能執行,只有目標文件而沒有源代碼,修改很不方便。編譯後程序運行時不須要從新翻譯,直接使用編譯的結果就好了。程序執行效率高,依賴編譯器,跨平臺性差些。多線程
Python 運行速度慢的緣由:
Python 是解釋型語言,代碼在執行時須要逐行編譯成 CPU 可以識別的機器碼,這個編譯過程很是消耗時間,因此運行速度比較慢。編程語言
Python 是一種面向對象的、解釋型的、弱類型的腳本語言。
弱類型語言的典型特徵:
1.變量無須聲明便可直接賦值;
2.變量的數據類型能夠動態改變。工具
Python 的優勢:
1.開源的編程語言;
2.開發效率高,既有完善的內置庫也有很是豐富第三方庫;
3.自動內存管理;
4.跨平臺;
5.膠水語言,能夠和其它語言混合使用;
Python 的缺點:
1.相比於 C/JAVA 代碼執行速度慢;
2.代碼不能加密,Python 是解釋性語言,源碼都是以明文形式保存的;
3.線程不能利用多核,GIL 即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python 的線程是操做系統的原生線程。在 Linux 上爲 pthread ,在 Windows 上爲 Win thread,徹底由操做系統調度線程的執行。一個 Python 解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核 CPU 平臺上,因爲 GIL 的存在,因此禁止多線程的並行執行。加密
Python代碼的兩種執行方式:
1.py文件執行
2.交互器執行操作系統
Python 程序第一次運行的時候,編譯的結果保存在位於內存中的 PyCodeObject 中,當 Python 程序運行結束時 Python 解釋器會把 PyCodeObject 寫回到 pyc 文件中。
第二次運行時 Python 程序會在磁盤中尋找 pyc 文件,若是找到則直接加載,不然就會重複Python第一次運行的過程。
若是 Python 源代碼被更新了則會重新編譯。
PyCodeObject:在內存中保存 Python 編譯後的結果
Pyc:保存 Python 解釋後的結果。線程
Python 腳本文件的後綴名能夠不寫,對於 Python 來說沒有實際意義,加 .py 後面後綴名只是爲了告訴人們這個腳本是用 Python 語言發開的。翻譯