特點是什么?
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。
這個用戶群,小眾而又龐大,而且整個業界對這這方面的專家有着很大的缺口。
純以前端兼設計師的身份,向這部分人群表示高山仰止。
然后,我再繼續折騰別的東西去。
