python優點和缺點

優點:
語法簡潔優美, 功能強大, 標準庫跟第三方庫灰常強大, 應用領域非常廣: vinta/awesome-python · GitHub(跟PHP形成宣明對比!)語言方面, 舉幾個例子:一切都是對象!!!類(class本身)/函數/類方法是callable的對象因爲是對象,所以你當然可以傳來傳去啦.
歡迎加羣 四 99 7 五四 6 14 學習交流,驗證cs
比如:class A:
def init(self):
print “init A”
def run(self):
print “run A”

threading.Thread(target=A).start() #: 在另一個線程執行A()

a = A()
threading.Thread(target=a.run).start() #: 在另一個線程執行a.run() …

驚呆沒有,這是怎麼做到的?? 也許你該看看描述符的概念

List表達式(其他好多語言也有,但是我最喜歡python的寫法):把”1023”變成 [1, 2, 3][ int(x) for x in “1023” if x != “0” ]
(當前你可以用Lisp風格的: map(int, filter(lambda x: x != “0”, “1024”)))對dict也是類似:adict = {“a”:1, “b”:2}
{k: v*2 for k, v in adict.items() }
yield關鍵字:當你需要返回很多東西然後一個一個用的時候, 你可以一次返回一個def xrange(n):
i = 0
while i < n:
yield i
i += 1
用法:
for i in xrange(10):
print i
裝飾器@:把something_heavy()返回的結果緩存起來(以函數名+args爲緩存的鍵值,只緩存最近使用的10條)@functool.lru_cache(10)
def something_heavy(args):
#各種耗時操作…..
pass
運算符重載:試試numpy, 你會驚呆的, 操作向量/矩陣跟基本類型一樣方便缺點:慢目測python是最慢的腳本語言,比V8上的JS還慢不少. (研究一下描述符,你會發現python調用對象方法的開銷好大!)但是python創始人說了, 一般程序的瓶頸在於20%的代碼, 所以你可以把那20%的代碼用C重寫(而python是膠水語言,用C重寫部分代碼當然很easy啦)同時,你可以試試PyPy, 引入了JIT技術動態類型有人說: 動態類型寫時爽, 重構起來是災難(原諒我記不得原話..).對於不寫unittest, 不做代碼覆蓋率測試的人來說, 動態語言當然是危險的, 拼寫錯誤都可能被隱藏, 重構?別搗亂!python創始人有話說: “如果你認爲編譯器可以幫你解決所有問題,那你一定幹編程沒多久” (鄙人深有體會,曾經年少輕狂的我非常鄙視javascript), “不管什麼程序,都需要寫testcase, 既然要寫testcase, 那麼動態類型不是問題!”在此推薦大家兩個工具: py.test python-coverage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章