① 為什稱python是一種膠水語言
python現在最廣為聞名的形容大概有這些:
他是很好的膠水語言。什麼是膠水語言?反正當時的我不知道。
他是新一代的系統腳本。系統腳本是什麼?
其次就是代碼可讀性。不過,這個其實還是爭議挺大的,我也不準備在這多說了。
反正我發現大家其實都沒解釋清楚。
大概是因為,那些大牛們都已經把很多東西習以為常了,卻不知道新人其實都一頭霧水。其實事情也沒那麼復雜。
膠水語言
先從Hello world開始。所有學python的童鞋都會從這句話開始:
print "Hello World!"。
問題來了:為什麼所有語言第一件做的事情,就是Hello World?
其實,他代表了UNIX統一的文本處理模型及介面。這些個玩意,Windows的編程領域是很難接觸到的也很難理解的。
下面寫個範例。比如我這么幹了:
# file: say.py
import sys
txt = sys.argv[1]
print "Hello %s!"%(txt)
那麼我就可以在Linux或Mac的終端上直接輸入:
python say.py World
輸出結果就會是:
Hello World!
這樣就確保了,在終端調用上的直觀與可編程性。
這樣,我就不用必須在別的python語言裡面調用python了,而能夠直接在shell上跟其它處理程序直接連接。
BTW,這其實也是Hello world,呵呵。
再玩復雜點的:
file: say2.py
import sys
for line in sys.stdin.readlines():
print "Hello %s!"%(line.strip())
那麼我就可以在終端這么干:echo -e 'water\nmaomaol\nkenbing\nlonger\nchuang'|python say3.py
輸出就會是:
Hello water!
Hello maomaol!
Hello kenbing!
Hello longer!
Hello chuang!
再進一步,我可以把前面的內容寫成文件,比如寫成一個這樣的文件:
names.txt
water
maomaol
kenbing
longer
chuang
就可以直接更便捷地做處理:
cat names.txt | python say2.py 這樣,我就用cat命令把文本列印出來,然後輸出到say2.py上去了。
輸出一樣的結果。
但是,我輸入到終端又有什麼用呢???沒錯,到終端的確沒啥用,我們把他輸出到文件吧!
cat names.txt | python say2.py > result.txt
就這樣,結果就保存到了result.txt這個文件里了。
這樣做的意義是什麼?
意義就是,在終端上我可以隨意地組合他和其它程序,作為一個中間處理模塊。
而且,他可以如此地簡單便捷,一些簡單的腳本只需要cat一下馬上就能明白是什麼意思。
一個表達式一行代碼,代碼塊有一致的標準的縮進,標準的命名方式,簡練的語言,支持注釋……
別的程序要訪問或調用,很簡單,一個命令把指定數據輸入到這里就好,然後要怎麼拼接怎麼拼接;
周期性地處理也沒問題,輸出到文件,等待別的程序調用。
比起windows各種詭異的processer,各種詭異的二進制存儲的文件,這樣一致的介面簡直能讓人想哭了。
系統腳本上:
他比SHELL多了很多數學及字元串處理能力,還多了很多很好用的迭代方法,還多了很多的原生的數據結構;
他比PERL多了很要命的代碼可讀性。
比起ruby和nodejs,他基本所有機器都預裝,而且已經經歷了時間的考驗。雖然,將來的確會有被這倆貨代替的可能性。
比起C/C++,他多了一個終端、甚至像ipython這樣的加強版神器終端,可以邊調試代碼邊把沒問題的代碼寫進文件。而且,源碼即可執行。
在我看來,這些就是python的優勢。讓他當之無愧是系統腳本的王者。
只可惜,現在就連大多數的程序員,都已經被圖形化界面給寵壞了,也習慣了各種大廠商、IDE提供的諸多工具包與功能,卻把很多很基礎的東西都給忽略了,卻在不斷地、重復地造輪子。這就叫碼農。
所以,大概也就敢於擁抱變化的系統管理員、運維工程師或數據分析工程師,才會長久地持續地喜歡python。
這個用戶群,小眾而又龐大,而且整個業界對這這方面的專家有著很大的缺口。
純以前端兼設計師的身份,向這部分人群表示高山仰止。
然後,我再繼續折騰別的東西去。
② python有哪些特點和優點
顯著的優點
Python 語言擁有諸多的優點,這其中,以下幾個優點特別顯著:
簡單易學:Python語言相對於其他編程語言來說,屬於比較容易學習的一門編程語言,它注重的是如何解決問題而不是編程語言的語法和結構。正是因為Python語言簡單易學,所以,已經有越來越多的初學者選擇Python語言作為編程的入門語言。例如,在浙江省 2017年高中信息技術改革中,《演算法與程序設計》課程將使用 Python語言替換原有的VB 語言。
語法優美:Python語言力求代碼簡潔、優美。在Python語言中,採用縮進來標識代碼塊,通過減少無用的大括弧,去除語句末尾的分號等視覺雜訊,使得代碼的可讀性顯著提高。閱讀一段良好的Python程序就感覺像是在讀英語一樣,它使你能夠專注於解決問題,而不用太糾結編程語言本身的語法。
豐富強大的庫:Python語言號稱自帶電池(Battery Included),寓意是Python語言的類庫非常的全面,包含了解決各種問題的類庫。無論實現什麼功能,都有現成的類庫可以使用。如果一個功能比較特殊,標准庫沒有提供相應的支持,那麼,很大概率也會有相應的開源項目提供了類似的功能。合理使用Python的類庫和開源項目,能夠快速的實現功能,滿足業務需求。
開發效率高:Python的各個優點是相輔相成的。例如,Python語言因為有了豐富強大的類庫,所以,Python的開發效率能夠顯著提高。相對於 C、C++ 和 Java等編譯語言,Python開發者的效率提高了數倍。實現相同的功能,Python代碼的文件往往只有 C、C++和Java代碼的1/5~1/3。雖然Python語言擁有很多吸引人的特性,但是,各大互聯網公司廣泛使用Python語言,很大程度上是因為Python語言開發效率高這個特點。開發效率高的語言,能夠更好的滿足互聯網快速迭代的需求,因此,Python語言在互聯網公司使用非常廣泛。
應用領域廣泛:Python語言的另一大優點就是應用領域廣泛,工程師可以使用Python 做很多的事情。例如,Web開發、網路編程、自動化運維、Linux系統管理、數據分析、科學計算、人工智慧、機器學習等等。Python語言介於腳本語言和系統語言之間,我們根據需要,既可以將它當做一門腳本語言來編寫腳本,也可以將它當做一個系統語言來編寫服務。
不可忽視的缺點
毫無疑問,Python確實有用很多的優點,每一個優點看起來都非常吸引人。但是,Python並不是沒有缺點的,最主要的缺點有以下幾個:
Python的執行速度不夠快。當然,這也不是一個很嚴重的問題,一般情況下,我們不會拿Python語言與C/C++這樣的語言進行直接比較。在Python語言的執行速度上,一方面,網路或磁碟的延遲,會抵消掉部分Python本身消耗的時間;另一方面,因為Python 特別容易和C結合起來,因此,我們可以通過分離一部分需要優化速度的應用,將其轉換為編譯好的擴展,並在整個系統中使用Python腳本將這部分應用連接起來,以提高程序的整體效率。
Python的GIL鎖限制並發:Python的另一個大問題是,對多處理器支持不好。如果讀者接觸Python時間比較長,那麼,一定聽說過GIL這個詞。GIL是指Python全局解釋器鎖(Global Interpreter Lock),當Python的默認解釋器要執行位元組碼時,都需要先申請這個鎖。這意味著,如果試圖通過多線程擴展應用程序,將總是被這個全局解釋器鎖限制。當然,我們可以使用多進程的架構來提高程序的並發,也可以選擇不同的Python實現來運行我們的程序。
Python 2與Python 3不兼容: 如果一個普通的軟體或者庫,不能夠做到後向兼容,那麼,它會被用戶無情的拋棄了。在Python中,一個槽點是Python 2與Python 3不兼容。因為Python沒有向後兼容,給所有的Python工程師帶來了無數的煩惱。
上述就是總結的Python語言的優缺點。總體來說,Python目前的發展還是非常不錯的。借著人工智慧時代的東風,Python開發人員的未來一定會很光明。
③ python語言的三個主要特點
Python語言主要有以下幾大特點:
1、簡單易學:Python是一種代表簡單主義思想的編程語言,閱讀一個良好的Python程序的時候就猶如在讀英語一樣。Python最大的優勢就是偽代碼的本質,在開發的時候主要以解決問題為主要,並不是搞明白語言的本身。
2、面向對象:Python既是面向對象的編程,也是面向對象編程,與其他主要的語言C++和Java對比來說,Python是以一種非常強大而且簡單的方式來實現面向對象的編程。
3、可移植性:Python具有開源的本質,可以被移植在許多的平台上,比如說Lnux、Windows、 FreeBSD、 Macintosh、
Solaris、OS/2、Amiga、AROS、AS/400等,Python都可以很好的運行其中。
4、解釋性:Python語言寫的程序不需要編譯成為二進制的代碼,可以直接從源代碼運行程序,在計算機內部,Python解釋器將源代碼轉換成為位元組碼的中間形式,可以直接翻譯運行。
5、開源:Python語言是開源的。簡單的來說,你可以自由發布這個軟體的拷貝,閱讀源代碼,對它進行改動,用於新的自由軟體之中。
6、高級語言:Python是高級編程語言,當使用Python進行編程的時候,無需考慮如何管理程序使用的內存一類的底層細節問題。
7、可擴展性:如果想要更快的運行,但是某些演算法不公開,這個部分的程序可以選擇用C語言進行編寫,然後再Python程序中進行使用。
8、豐富的庫:Python具有豐富強大的標准庫,可以幫助你處理各種工作,其中包含了正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGl、FTP、電子郵件等,這些功能都是可以使用的,所以Python語言功能十分強大。
9、規范代碼:在使用Python書寫代碼的時候採用強制縮進的方式讓代碼具有非常好的可讀性。
④ python 可擴展主要體現
就算你的項目中有大量的Python代碼,你也依舊可以有條不紊地通過將其分離為多個文件或模塊加以組織管理。而且你可以從一個模塊中選取代碼,而從另一個模塊中讀取屬性。更棒的是,對於所有模塊,Python的訪問語法都是相同的。不管這個模塊是Python標准庫中的還是你一分鍾之前創造的,哪怕是你用其他語言寫的擴展都沒問題!藉助這些特點,你會感覺自己根據需要「擴展」了這門語言,而且你已經這么做了。
代碼中的瓶頸,可能是在性能分析中總排在前面的那些熱門或者一些特別強調性能的地方,可以作為Python擴展用C重寫。需要重申的是,這些介面和純Python模塊的介面是一模一樣的,乃至代碼和對象的訪問方法也是如出一轍的。唯一不同的是,這些代碼為性能帶來了顯著的提升。自然,這全部取決你的應用程序以及它對資源的需求情況。很多時候,使用編譯型代碼重寫程序的瓶頸部分絕對是益處多多的,因為它能明顯提升整體性能。
程序設計語言中的這種可擴展性使得工程師能夠靈活附加或定製工具,縮短開發周期。雖然像C、C++乃至Java等主流第三代語言(3GL)都擁有該特性,但是這么容易地使用C編寫擴展確實是Python的優勢。此外,還有像PyRex這樣的工具,允許C和Python混合編程,使編寫擴展更加輕而易舉,因為它會把所有的代碼都轉換成C語言代碼。
因為Python的標准實現是使用C語言完成的(也就是CPython),所以要使用C和C++編寫Python擴展。Python 的Java實現被稱作Jython,要使用Java編寫其擴展。最後,還有IronPython,這是針對.NET或Mono平台的C#實現。你可以使用C#或者VB.Net擴展IronPython.