回複內容:
Python標準庫雖多,但不是個個用起來都很爽。
只給一條建議的話就是:如果Python標準庫中明明已經提供一類操作集合的模組了,而網路上還有一些人推薦第三方庫,別想了,用後者吧。比如(Requests: HTTP for Humans
)之於urllib,比如(Arrow: better dates and times for Python
)之於datetime。這兩個庫的好用之處就不作介紹了,想藉此機會對Python標準庫吐槽幾句:
在Python2下,最初有個urllib標準庫用來處理從網路上抓取一些資料的工作,但是這個庫太不好用了,例如一次HTTP協議的請求中想自訂要求標頭,還得引入另一個模組httplib,太不人性化。於是有人對它做了些擴充,打包後叫urllib2,還給加到標準庫裡去了,但這個urllib2還是有很多地方不是很好用,比如沒有串連池這種東西,做爬蟲那幫人還得自己鼓搗,於是又有人對它做了擴充,打包後叫urllib3,謝天謝地,這次沒加入到標準庫,不過要是Python社區對於這種新納入標準庫的模組命名不是這麼蛋疼的話,我倒認為urllib3現有的功能需要加入到標準庫中,只有一個urllib多好。幸好,雖然前面說得那個好用的(Requests: HTTP for Humans
)也是基於urllib3所做的擴充,但終結了數字尾巴的命名噩夢,要是想想urllib4,就覺得一陣反胃。
還是命名上的吐糟,這次舉個Python3的例子,在Python3裡,urllib和urllib2都被合并到了一起,就叫urllib,根據原先兩個模組所提供的方法工作情境分類,被放入urllib.request、urllib.parse、urllib.error這三個子模組中,不過之前提到的urllib3中像是串連池這類有用的,還是沒被支援。看上去比Python2中要美好,讓我們看看urllib.request模組的名字空間吧:
urllib.request.AbstractBasicAuthHandlerurllib.request.AbstractDigestAuthHandlerurllib.request.AbstractHTTPHandlerurllib.request.BaseHandlerurllib.request.addclosehookurllib.request.addinfourlurllib.request.build_openerurllib.request.getproxiesurllib.request.getproxies_environmenturllib.request.getproxies_macosx_sysconfurllib.request.parse_http_listurllib.request.parse_keqv_listurllib.request.pathname2urlurllib.request.posixpathurllib.request.to_bytesurllib.request.unquoteurllib.request.unquote_to_bytesurllib.request.unwrapurllib.request.url2pathnameurllib.request.urlcleanupurllib.request.urljoinurllib.request.urlopen
用以致學。=====2015-1-21更新=======
換了電腦來好好回答一下。剛剛開始學完Python的基礎文法之後也有一些迷茫,不知道該繼續學些什麼,於是在網上看到了Python Challenge這個闖關遊戲,據說是2007年為了推廣Python弄的這樣一個東西。
當時第一次接觸玩了兩關就玩不下去了(那時候編碼能力和學習能力真的是弱的可以)
這段時間又重新找出來做做,發現真的感覺完全不一樣了,它每一關都會用到一兩個甚至更多個Python的標準庫,他會給你一些提示,然後你可以根據提示去Python的官網看看具體庫的用法,然後再開始做。這樣的話就可以達到一個瞭解和學習Python標準庫的目的。至少下次遇到問題時可以知道用Python的什麼庫來解決。
在我的部落格聽雨軒 | You are my convition, but there must be something wrong in my life
裡我寫了前19關的解題報告,大家可以參考一下。
在這裡簡單羅列一下每一關用到的庫和Python的知識:
第00關:數字計算。
第01關:string
第02關:re 或者用filter函數也可以
第03關:re
第04關:urllib
第05關:pickle
第06關:zipfile
第07關:PIL
第08關:bz2
第09關:turtle 或PIL
第10關:找規律
第11關:PIL
第12關:檔案處理
第13關:xmlrpclib
第14關:PIL
第15關:datetime
第16關:PIL
第17關:urllib urllib2 cookielib xmlrpclib
第18關:difflib binascii
第19關:wave
暫時只做到這裡。。。後面的有機會繼續更新~
=====原答案=====
在網上有一個python challenge的闖關遊戲,一關基本就需要用一到兩個標準庫,然後你可以在實踐中知道這些庫的用法。我最近在做這個。。安利一下我的部落格,裡面有自己寫的題解。
聽雨軒 | You are my convition, but there must be something wrong in my life
用到哪個學哪個,多翻官方文檔。這時候祭出我的小項目: https://pypi.python.org/pypi/rdir
,合作者 @賴淵
可通過 樹形結構的html、命令列、檔案形式來查看python module或 module內object的遞迴結構和文檔(pydoc)。目前僅支援 *nix的python 2.x,windows未測試,若有Windows使用者用過可以反映一下情況,抱歉不會windows。
目前進一步在規劃迭代中,歡迎試用拍磚以及提功能建議。report issues: Issues · Lhfcws/rdir · GitHub
Example: rdir/test.py at master · Lhfcws/rdir · GitHub
下載方式: sudo pip install rdir
================ 廣告時間結束,開始答題。 =======
1. 如何學習python?
我假設你有其他相關語言基礎。找一本如《python基礎教程》這樣的入門書看一遍,下載個ipython(windows實在不行那個IDLE勉強也可以吧)解譯器上跟著教程操作熟悉一下,然後寫個小項目比如多人聊天室。你要能把chatroom努力熬出來了,你已經會用python做簡單的並行、網路通訊和各種基本操作了。建議使用linux / MacOSX系統,因為命令列下你可以寫一點小工具進一步去熟悉,其中需要什麼庫你就去搜尋看看有沒有。
學會使用 pip 做第三方模組下載管理。
2. 學習標準庫
不用專門學習,你需要什麼功能就去搜搜人家怎麼用,python很多庫的文檔都不怎麼friendly。也許可能有些實現你不知道有庫,自己寫的很麻煩,但其實無所謂。你能搞出來沒問題那就先用著,等到你知道有更好的實現或者發現問題解決很麻煩感覺要造輪子的時候,請搜尋。
* 以上回答不適合較有經驗的程式員。