python是著名的"龜叔」guido van rossum在2023年聖誕節期間,為了打發無聊的聖誕節而編寫的乙個程式語言。
現在,全世界差不多有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能執行的機器碼,所以非常快。
第二個缺點就是**不能加密。如果要發布你的python程式,實際上就是發布源**,這一點跟c語言不同,c語言不用發布源**,只需要把編譯後的機器碼(也就是你在windows上常見的***.exe檔案)發布出去。要從機器碼反推出c**是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把原始碼發布出去。
這個缺點僅限於你要編寫的軟體需要賣給別人掙錢的時候。好訊息是目前的網際網路時代,靠賣軟體授權的商業模式越來越少了,靠**和移動應用賣服務的模式越來越多了,後一種模式不需要把原始碼給別人。
再說了,現在如火如荼的開源運動和網際網路自由開放的精神是一致的,網際網路上有無數非常優秀的像linux一樣的開源**,我們千萬不要高估自己寫的**真的有非常大的"商業價值」。那些大公司的**不願意開放的更重要的原因是**寫得太爛了,一旦開源,就沒人敢用他們的產品了。
當然,python還有其他若干小缺點,請自行忽略,就不一一枚舉了。
廖雪峰python教程 Python簡介
python是著名的 龜叔 guido van rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的乙個程式語言。現在,全世界差不多有600多種程式語言,但流行的程式語言也就那麼20來種。如果你聽說過tiobe排行榜,你就能知道程式語言的大致流行程度。這是最近10年最常用的10種程式語言...
廖雪峰python教程筆記1
d.get thomas 1 檢查字典中是否有 thomas 的key,沒有返回 1,沒有指定返回值預設返回none d.pop bob 刪key 字典key不能為列表 s set 1,2,3 set需要以list作為輸入集合,不能重複且無順序。s.add s.remove s1 s2 s1 s2 ...
廖雪峰Python教程之mapreduce
1.map 函式 map 函式接收兩個引數,乙個是函式,乙個是iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。def f x return x x r map f,1,2,3,4,5 list r out 1,4,9,16,25 2.reduce ...