1、Python介紹python
python的創始⼈爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多· 範羅蘇姆爲了在阿姆斯特丹打發時間,決⼼開發⼀個新的腳本解釋程序,做爲ABC語⾔的⼀ 種繼承。web
1.Python是一門什麼樣的語言算法
編程語⾔主要從如下⼏個⻆度爲進⾏分類,編譯型和解釋型、靜態語⾔和動態語⾔、強類 型定義語⾔和弱類型定義語⾔,咱們先看編譯型語⾔和解釋型語⾔. shell
一、解釋型語言:在執⾏程序時,將源程序⼀條⼀條的解釋成機器語⾔給計算機來執⾏,因此運⾏速度 是不如編譯後的程序運⾏的快的。編程
二、編譯型語言:是把源程序的每⼀條語句都編譯成機器語⾔,並保存成⼆進制⽂件,這樣運⾏時計算機 能夠直接以機器語⾔來運⾏此程序,速度很快。多線程
編譯型 vs 解釋型框架
編譯型:函數
優勢:編譯器⼀般會有預編譯的過程對代碼進⾏優化。由於編譯只作⼀次,運⾏時不須要編 譯,因此編譯型語⾔的程序執⾏效率⾼。能夠脫離語⾔環境獨立運⾏。性能
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運⾏環境⽣ 成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運⾏的操做系統環境編譯不一樣的 可執⾏⽂件。測試
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運⾏,前提是安裝瞭解釋器(虛擬機)。 靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不⽤停機維護。
缺點:每次運⾏的時候都要解釋⼀遍,性能上不如編譯型語⾔。
爲何要對高級語言源程序進行解釋或編譯?
這是由於計算機不能直接認識並執⾏咱們寫的語句,它只能認識機器語⾔(是⼆進制的形式)
Python屬於什麼語言?
Python屬於解釋性語言。
二、Python的優缺點
先看優勢
1. Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易 懂,初學者學Python,不但⼊⻔容易,⽽且未來深⼊下去,能夠編寫那些⾮常⾮常 複雜的程序。
2. 開發效率⾮常⾼,Python有⾮常強⼤的第三⽅庫,基本上你想經過計算機實現任何 功能,Python官⽅庫⾥都有相應的模塊進⾏⽀持,直接下載調⽤後,在基礎庫的基 礎上再進⾏開發,⼤⼤下降開發週期,避免重複造輪⼦。
3. ⾼級語⾔————當你⽤Python語⾔編寫程序的時候,你⽆需考慮諸如如何管理你 的程序使⽤的內存⼀類的底層細節
4. 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動 使它可以⼯ 做在不一樣平臺上)。若是你⼩⼼地避免使⽤依賴於系統的特性,那麼你 的全部Python程序⽆需修改就⼏乎能夠在市場上全部的系統平臺上運⾏
5. 可擴展性————若是你須要你的⼀段關鍵代碼運⾏得更快或者但願某些算法不公 開,你能夠把你的部分程序⽤C或C++編寫,而後在你的Python程序中使⽤它們。
6. 可嵌⼊性————你能夠把Python嵌⼊你的C/C++程序,從⽽向你的程序⽤戶提供 腳本功能。
再看缺點
1. 速度慢,Python 的運⾏速度相⽐C語⾔確實慢不少,跟JAVA相⽐也要慢⼀些,但其實這⾥所指的運⾏速度 慢在⼤多數狀況下⽤戶是⽆法直接感知到的,必須藉助測試⼯具才能體現出來,⽐如 你⽤C運⼀個程序花了0.01s,⽤Python是0.1s,這樣C語⾔直接⽐Python快了10倍, 算是⾮常誇張了,可是你是⽆法直接經過⾁眼感知的,由於⼀個正常⼈所能感知的時 間最⼩單位是0.15-0.4s左右。其實在⼤多數狀況下Python已經徹底能夠滿 ⾜你對程序速度的要求,除⾮你要寫對速度要求極⾼的搜索引擎等,這種狀況下,當 然仍是建議你⽤C去實現的。
2. 代碼不能加密,由於PYTHON是解釋性語⾔,它的源碼都是以名⽂形式存放的,不 過我不認爲這算是⼀個缺點,若是你的項⽬要求源代碼必須是加密的,那你⼀開始就 不該該⽤Python來去實現。
3. 線程不能利⽤多CPU問題,這是Python被⼈詬病最多的⼀個缺點,GIL即全局解釋 器鎖(Global Interpreter Lock),是計算機程序設計語⾔解釋器⽤於同步線程的 ⼯具,使得任什麼時候刻僅有⼀個線程在執⾏,Python的線程是操做系統的原⽣線程。 在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的 執⾏。⼀個python解釋器進程內有⼀條主線程,以及多條⽤戶程序的執⾏線程。即 使在多核CPU平臺上,因爲GIL的存在,因此禁⽌多線程的並⾏執⾏。
三、Python解釋器
CPython
當咱們從Python官⽅⽹站下載並安裝好Python 2.7後,咱們就直接得到了⼀個官⽅版 本的解釋器:CPython。這個解釋器是⽤C語⾔開發的,因此叫CPython。在命令⾏下運 ⾏python就是啓動CPython解釋器。 CPython是使⽤最⼴的Python解釋器。教程的全部代碼也都在CPython下執⾏。
IPython
IPython是基於CPython之上的⼀個交互式解釋器,也就是說,IPython只是在交互⽅ 式上有所加強,可是執⾏Python代碼的功能和CPython是徹底⼀樣的。好⽐不少國產瀏覽 器雖然外觀不一樣,但內核其實都是調⽤了IE。 CPython⽤>>>做爲提示符,⽽IPython⽤In [序號]:做爲提示符。
PyPy
PyPy是另⼀個Python解釋器,它的⽬標是執⾏速度。PyPy採⽤JIT技術,對Python代 碼進⾏動態編譯(注意不是解釋),因此能夠顯著提⾼Python代碼的執⾏速度。 絕⼤部分Python代碼均可以在PyPy下運⾏,可是PyPy和CPython有⼀些是不一樣的,這就 致使相同的Python代碼在兩種解釋器下執⾏可能會有不一樣的結果。若是你的代碼要放到 PyPy下執⾏,就須要瞭解PyPy和CPython的不一樣點。
Jython
Jython是運⾏在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節 碼執⾏。
IronPython
IronPython和Jython相似,只不過IronPython是運⾏在微軟.Net平臺上的Python解 釋器,能夠直接把Python代碼編譯成.Net的字節碼。
2、Python發展史