1. 程式人生 > >python優點和缺點

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