[TOC]
## 1.Python入門
### 簡介
Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。
Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。
- **Python 是一種解釋型語言:** 這意味著開發過程中沒有了編譯這個環節。類似于PHP和Perl語言。
- **Python 是交互式語言:** 這意味著,您可以在一個 Python 提示符 >>> 后直接執行代碼。
- **Python 是面向對象語言:** 這意味著Python支持面向對象的風格或代碼封裝在對象的編程技術。
- **Python 是初學者的語言:**Python 對初級程序員而言,是一種偉大的語言,它支持廣泛的應用程序開發,從簡單的文字處理到 WWW 瀏覽器再到游戲。
### Python發展史
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國家數學和計算機科學研究所設計出來的。
Python 本身也是由諸多其他語言發展而來的,這包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的腳本語言等等。
像 Perl 語言一樣,Python 源代碼同樣遵循 GPL(GNU General Public License)協議。
現在 Python 是由一個核心開發團隊在維護,Guido van Rossum 仍然占據著至關重要的作用,指導其進展。
### Python特點
- **1.易于學習:**Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。
- **2.易于閱讀:**Python代碼定義的更清晰。
- **3.易于維護:**Python的成功在于它的源代碼是相當容易維護的。
- **4.一個廣泛的標準庫:**Python的最大的優勢之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。
- **5.互動模式:**互動模式的支持,您可以從終端輸入執行代碼并獲得結果的語言,互動的測試和調試代碼片斷。
- **6.可移植:**基于其開放源代碼的特性,Python已經被移植(也就是使其工作)到許多平臺。
- **7.可擴展:**如果你需要一段運行很快的關鍵代碼,或者是想要編寫一些不愿開放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調用。
- **8.數據庫:**Python提供所有主要的商業數據庫的接口。
- **9.GUI編程:**Python支持GUI可以創建和移植到許多系統調用。
- **10.可嵌入:** 你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力。
### Python缺點
第一個缺點就是運行速度慢,和C程序相比非常慢,因為Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,所以非常快。
但是大量的應用程序不需要這么快的運行速度,因為用戶根本感覺不出來。例如開發一個下載MP3的網絡應用程序,C程序的運行時間需要0.001秒,而Python程序的運行時間需要0.1秒,慢了100倍,但由于網絡更慢,需要等待1秒,你想,用戶能感覺到1.001秒和1.1秒的區別嗎?這就好比F1賽車和普通的出租車在北京三環路上行駛的道理一樣,雖然F1賽車理論時速高達400公里,但由于三環路堵車的時速只有20公里,因此,作為乘客,你感覺的時速永遠是20公里。
第二個缺點就是代碼不能加密。如果要發布你的Python程序,實際上就是發布源代碼,這一點跟C語言不同,C語言不用發布源代碼,只需要把編譯后的機器碼(也就是你在Windows上常見的xxx.exe文件)發布出去。要從機器碼反推出C代碼是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發布出去。
這個缺點僅限于你要編寫的軟件需要賣給別人掙錢的時候。好消息是目前的互聯網時代,靠賣軟件授權的商業模式越來越少了,靠網站和移動應用賣服務的模式越來越多了,后一種模式不需要把源碼給別人。
再說了,現在如火如荼的開源運動和互聯網自由開放的精神是一致的,互聯網上有無數非常優秀的像Linux一樣的開源代碼,我們千萬不要高估自己寫的代碼真的有非常大的“商業價值”。那些大公司的代碼不愿意開放的更重要的原因是代碼寫得太爛了,一旦開源,就沒人敢用他們的產品了。
### 編程語言排行
| Feb 2019 | Feb 2018 | Change | Programming Language | Ratings | Change |
| -------- | -------- | ---------------------------------------------------- | -------------------- | ------- | ------ |
| 1 | 1 | | Java | 15.876% | +0.89% |
| 2 | 2 | | C | 12.424% | +0.57% |
| 3 | 4 |  | Python | 7.574% | +2.41% |
| 4 | 3 |  | C++ | 7.444% | +1.72% |
| 5 | 6 |  | Visual Basic .NET | 7.095% | +3.02% |
| 6 | 8 |  | JavaScript | 2.848% | -0.32% |
| 7 | 5 |  | C# | 2.846% | -1.61% |
| 8 | 7 |  | PHP | 2.271% | -1.15% |
| 9 | 11 |  | SQL | 1.900% | -0.46% |
| 10 | 20 |  | Objective-C | 1.447% | +0.32% |
| 11 | 15 |  | Assembly language | 1.377% | -0.46% |
| 12 | 19 |  | MATLAB | 1.196% | -0.03% |
| 13 | 17 |  | Perl | 1.102% | -0.66% |
| 14 | 9 |  | Delphi/Object Pascal | 1.066% | -1.52% |
| 15 | 13 |  | R | 1.043% | -1.04% |
| 16 | 10 |  | Ruby | 1.037% | -1.50% |
| 17 | 12 |  | Visual Basic | 0.991% | -1.19% |
| 18 | 18 | | Go | 0.960% | -0.46% |
| 19 | 49 |  | Groovy | 0.936% | +0.75% |
| 20 | 16 |  | Swift | 0.918% | -0.88% |
> 來源: https://www.tiobe.com/tiobe-index/
### 應用范圍