1. 程式人生 > >演算法工程師修仙之路:python3廖雪峰教程筆記(一)

演算法工程師修仙之路:python3廖雪峰教程筆記(一)

此筆記摘錄於廖雪峰先生的教程,感謝廖先生的無私分享,特此致敬!

python簡介


  • Python是一種什麼語言?

    • 用任何程式語言來開發程式,都是為了讓計算機幹活,而計算機幹活的CPU只認識機器指令,所以,儘管不同的程式語言差異極大,最後都得“翻譯”成CPU可以執行的機器指令。而不同的程式語言,幹同一個活,編寫的程式碼量,差距也很大。
    • 比如,完成同一個任務,C語言要寫1000行程式碼,Java只需要寫100行,而Python可能只要20行。所以Python是一種相當高階的語言。
    • 程式碼少的代價是執行速度慢,C程式執行1秒鐘,Java程式可能需要2秒,而Python程式可能就需要10秒。
    • C語言是可以用來編寫作業系統的貼近硬體的語言,所以,C語言適合開發那些追求執行速度、充分發揮硬體效能的程式。而Python是用來編寫應用程式的高階程式語言。
  • 當你用一種語言開始作真正的軟體開發時,你除了編寫程式碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。高階程式語言通常都會提供一個比較完善的基礎程式碼庫,讓你能直接呼叫。Python就為我們提供了非常完善的基礎程式碼庫,覆蓋了網路、檔案、GUI、資料庫、文字等大量內容,被形象地稱作“內建電池(batteries included)”。用Python開發,許多功能不必從零編寫,直接使用現成的即可。

  • 除了內建的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。當然,如果你開發的程式碼通過很好的封裝,也可以作為第三方庫給別人使用。

  • Python適合開發哪些型別的應用?

    • 首選是網路應用,包括網站、後臺服務等等;
    • 其次是許多日常需要的小工具,包括系統管理員需要的指令碼任務等等;
    • 另外就是把其他語言開發的程式再包裝起來,方便使用。
  • Python的缺點

    • **第一個缺點就是執行速度慢,和C程式相比非常慢。**因為Python是解釋型語言,你的程式碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程式是執行前直接編譯成CPU能執行的機器碼,所以非常快。
    • **第二個缺點就是程式碼不能加密。**如果要釋出你的Python程式,實際上就是釋出原始碼,這一點跟C語言不同,C語言不用釋出原始碼,只需要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe檔案)釋出出去。要從機器碼反推出C程式碼是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把原始碼釋出出去。
  • 因為Python是跨平臺的,它可以執行在Windows、Mac和各種Linux/Unix系統上。在Windows上寫Python程式,放到Linux上也是能夠執行的。

  • 要開始學習Python程式設計,首先就得把Python安裝到你的電腦裡。安裝後,你會得到Python直譯器(就是負責執行Python程式的),一個命令列互動環境,還有一個簡單的整合開發環境。

Python直譯器


  • 當我們編寫Python程式碼時,我們得到的是一個包含Python程式碼的以.py為副檔名的文字檔案。要執行程式碼,就需要Python直譯器去執行.py檔案。

  • 由於整個Python語言從規範到直譯器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python直譯器來執行Python程式碼(當然難度很大)。事實上,確實存在多種Python直譯器。

    • CPython
      • 當我們從Python官方網站下載並安裝好Python 3.x後,我們就直接獲得了一個官方版本的直譯器: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的位元組碼。
  • Python的直譯器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺互動,最好的辦法不是用Jython或IronPython,而是通過網路呼叫來互動,確保各程式之間的獨立性。