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