Python學(xué)習(xí)經(jīng)驗(yàn)談:版本、IDE選擇及編碼解決方案
話(huà)說(shuō)目前三種常見(jiàn)動(dòng)態(tài)語(yǔ)言Ruby, Lua, Python我竟然都接觸過(guò)了,用下來(lái)發(fā)現(xiàn)還是Python比較有趣
"Battery Included“的確不是蓋的,各種功能的庫(kù)一應(yīng)俱全,幾行代碼就能完成神奇的功能。以下介紹學(xué)習(xí)Python以來(lái)的一些感想跟經(jīng)驗(yàn),希望對(duì)想要學(xué)習(xí)Python或者和我一樣的Python初級(jí)入門(mén)者能有所幫助
另外強(qiáng)調(diào)下本文全部講的是Windows平臺(tái)下的事情…
Python學(xué)習(xí)經(jīng)驗(yàn)1.選擇Python版本和發(fā)行版
Python目前的主流版本很豐富,2.5,2.6和新的3.0都有人用。那么到底該裝哪個(gè)版本好呢?
經(jīng)過(guò)一段時(shí)間的使用我強(qiáng)烈的意識(shí)到目前的情況下(今天是09年5月24日),絕對(duì)是2.5版比較合適。
主要是因?yàn)榉浅6嗟牡谌綆?kù)目前只有對(duì)應(yīng)2.5的簡(jiǎn)單安裝包。雖然理論上2.5下能用的庫(kù)2.6也肯定沒(méi)問(wèn)題,但是實(shí)際上總有各種各樣的問(wèn)題。例如pyinstaller到現(xiàn)在也是只支持2.5。在這個(gè)問(wèn)題上我可以非常堅(jiān)定的講:裝2.5肯定沒(méi)錯(cuò),你以后會(huì)因?yàn)檫@個(gè)感謝我的。
Windows下是沒(méi)有自帶Python的,那么選擇一個(gè)發(fā)行版是必須的。
常見(jiàn)的發(fā)行版有Python.org的官方的發(fā)行版,ActiveState的ActivePython這兩個(gè)。
之前我一直裝的是后面ActiveState的哪一個(gè),后來(lái)因?yàn)橐玫絥umpy,找到了這個(gè)Python(x, y)
用上這個(gè)以后我對(duì)Python的好感是更上一層樓。
這個(gè)發(fā)行版有點(diǎn)大(接近400mb),但是里面附帶了科學(xué)計(jì)算方面的很多常用庫(kù),以及著名的PyQt 。可能有人覺(jué)得科學(xué)計(jì)算方面的庫(kù)不太用的到,但像nump,scipy等一干庫(kù)被很多其他庫(kù)依賴(lài),還有很多文檔相關(guān)的庫(kù)如sphinx沒(méi)有的話(huà)也會(huì)很頭痛。同時(shí)PyQt對(duì)于新手來(lái)說(shuō)也是出名的難以正確配置,而python(x, y)裝好了以后直接就能用,感覺(jué)非常棒。同時(shí)該發(fā)行版還附帶了IDE和一些有用的工具。其中IPython完全替代了Python自帶的那個(gè)難用的互動(dòng)Shell。
Python自帶的shell應(yīng)該還是蠻常用的。那么這個(gè)IPython就相當(dāng)于它的超級(jí)加強(qiáng)版:帶彩色顯示,語(yǔ)句自動(dòng)完成,額外的常用命令等等。其中tab鍵自動(dòng)補(bǔ)完非常強(qiáng)大。比如在上圖中我輸入sys. (注意有個(gè)點(diǎn)),然后按tab鍵,這時(shí)IPython會(huì)顯示出sys下所有的屬性和方法,這肯定就是你我朝思暮想的超級(jí)自動(dòng)補(bǔ)全。而且應(yīng)為是在互動(dòng)模式下,語(yǔ)句是實(shí)實(shí)在在被執(zhí)行的,很好理解這里的自動(dòng)補(bǔ)全是最完整的,比單靠分析代碼的方式效果好很多。
其他方面的話(huà),Python(x, y)還附帶了所有庫(kù)的離線文檔(看的出來(lái)都是人工整理出來(lái)的),以及Eclipse+PyDev集成(這個(gè)下面會(huì)單獨(dú)講到)。附帶一個(gè)工具用于啟動(dòng)各個(gè)部分以及查閱文檔。
其自帶的Python版本正是2.5
總之,裝個(gè)Python(x, y)試試看,十有八九不會(huì)后悔。
Python學(xué)習(xí)經(jīng)驗(yàn)2.IDE的選擇
我一直認(rèn)為選擇一個(gè)好用的IDE絕對(duì)能使編程樂(lè)趣加倍,而對(duì)我來(lái)說(shuō)好的IDE最重要的一點(diǎn)就是代碼補(bǔ)全和自動(dòng)文檔顯示。我嘗試過(guò)的IDE/編輯器有Komodo Edit,UliPad,Pydev***還是選擇了Pydev這個(gè)看似有點(diǎn)笨重的Eclipse集成。
Pydev的基本使用跟其他的差不多,在代碼補(bǔ)全方面有點(diǎn)小技巧:
Pydev會(huì)自動(dòng)通過(guò)代碼分析來(lái)進(jìn)行一定程度上的代碼補(bǔ)全,但是很多需要運(yùn)行時(shí)才能獲得的信息是不能這樣獲得的。通過(guò)在Pydev中設(shè)置Forced Buildins來(lái)設(shè)置,能取得更好的效果。試了幾次發(fā)現(xiàn)基本上大部分庫(kù)都能獲得自動(dòng)補(bǔ)全,同時(shí)會(huì)顯示docstring,效果相當(dāng)不錯(cuò)。
具體方法如下圖,在Pydev窗口中選擇菜單欄Window->Preference->Pydev->Interpreter Python
如下圖中,點(diǎn)擊New,輸入你需要使用的模塊名字即可
總體效果絕對(duì)是同類(lèi)IDE中比較好的
Python學(xué)習(xí)經(jīng)驗(yàn)3.Python中String/Unicode的編碼問(wèn)題
Python中的String和Unicode都提供了decode和encode方法,讓人很容易混亂,然而出現(xiàn)亂碼和UnicodeEncodeError這種情況很讓人崩潰,那么下面介紹些個(gè)人心得。
Python中的String的地位就相當(dāng)與C中的char *做的字符串,儲(chǔ)存的可以使ASCII字符串,也可以是未經(jīng)處理的數(shù)據(jù)。所以String中的每一個(gè)值都像是一個(gè)char。而Unicode中則將每一個(gè)元素認(rèn)為是一個(gè)真正的Unicode字符。
關(guān)于decode/encode方法。decode可以理解為decode from,由一個(gè)String調(diào)用decode方法將他自己按傳入的編碼名來(lái)decode成為一個(gè)Unicode串。encode可以理解為encode to,由一個(gè)Unicode 來(lái)調(diào)用encode方法將他自己按照傳入的編碼名來(lái)encode為一個(gè)String串。所以String就是輸入輸出時(shí)使用的,而Unicode則是程序內(nèi)部進(jìn)行處理時(shí)的東西。
對(duì)于編碼是產(chǎn)生Error,則可以通過(guò)在Encode時(shí)傳入錯(cuò)誤處理參數(shù) 'ignore’/ ' replace’ 來(lái)避免。
本文來(lái)自apit的博客:《Python二三事》
【編輯推薦】