一直想了解下Python,今兒在外面辦事排隊的時候,打開了廖老師的官網,找到了Python教程。雖然只是一篇關於Python的簡介,可是經過將Python的特性與C進行對比,很生動地概括了Python的一些特性。由於以前花過期間學習C,因此可以很容易地體會Python的特性。上學期經過廖老師的教程順利掌握了Git,因此再次遇到廖老師的教程,忍不住要收藏一下。會在廖老師的教程中用紅色字體插入批註或對知識點進行標識。程序員
首先,普及一下編程語言的基礎知識。用任何編程語言來開發程序,都是爲了讓計算機幹活,好比下載一個MP3,編寫一個文檔等等,而計算機幹活的CPU只認識機器指令,因此,儘管不一樣的編程語言差別極大,最後都得「翻譯」成CPU能夠執行的機器指令。而不一樣的編程語言,幹同一個活,編寫的代碼量,差距也很大。數據庫
好比,完成同一個任務,C語言要寫1000行代碼,Java只須要寫100行,而Python可能只要20行。編程
因此Python是一種至關高級的語言。網絡
那麼是否是代碼越少越好呢?代碼少的代價是運行速度慢,C程序運行1秒鐘,Java程序可能須要2秒,而Python程序可能就須要10秒。編程語言
那是否是越低級的程序越難學,越高級的程序越簡單?表面上來講,是的,可是,在很是高的抽象計算中,高級的Python程序設計也是很是難學的,因此,高級程序語言不等於簡單。工具
Python是著名的「龜叔」Guido van Rossum在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。性能
如今,全世界差很少有600多種編程語言,但流行的編程語言也就那麼20來種。若是你據說過TIOBE排行榜,你就能知道編程語言的大體流行程度。這是最近10年最經常使用的10種編程語言的變化圖:學習
總的來講,這幾種編程語言各有千秋。C語言是能夠用來編寫操做系統的貼近硬件的語言,因此,C語言適合開發那些追求運行速度、充分發揮硬件性能的程序。而Python是用來編寫應用程序的高級編程語言。字體
當你用一種語言開始做真正的軟件開發時,你除了編寫代碼外,還須要不少基本的已經寫好的現成的東西,來幫助你加快開發進度。好比說,要編寫一個電子郵件客戶端,若是先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。高級編程語言一般都會提供一個比較完善的基礎代碼庫,讓你能直接調用,好比,針對電子郵件協議的SMTP庫,針對桌面環境的GUI庫,在這些已有的代碼庫的基礎上開發,一個電子郵件客戶端幾天就能開發出來。 網站
Python就爲咱們提供了很是完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象地稱做「內置電池(batteries included)」。用Python開發,許多功能沒必要從零編寫,直接使用現成的便可。除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。固然,若是你開發的代碼經過很好的封裝,也能夠做爲第三方庫給別人使用。
許多大型網站就是用Python開發的,例如YouTube、Instagram,還有國內的豆瓣。不少大公司,包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。
龜叔給Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂。初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
總的來講,Python的哲學就是簡單優雅,儘可能寫容易看明白的代碼,儘可能寫少的代碼。若是一個資深程序員向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你能夠盡情地嘲笑他。
那Python適合開發哪些類型的應用呢?首選是網絡應用,包括網站、後臺服務等等;其次是許多平常須要的小工具,包括系統管理員須要的腳本任務等等;另外就是把其餘語言開發的程序再包裝起來,方便使用。
最後說說Python的缺點。
任何編程語言都有缺點,Python也不例外。優勢說過了,那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同樣的開源代碼,咱們千萬不要高估本身寫的代碼真的有很是大的「商業價值」。那些大公司的代碼不肯意開放的更重要的緣由是代碼寫得太爛了,一旦開源,就沒人敢用他們的產品了。
固然,Python還有其餘若干小缺點,請自行忽略,就不一一列舉了。