python 学习经验 转自(http://www.elias.cn/Python/HomePage)
生活随笔
收集整理的這篇文章主要介紹了
python 学习经验 转自(http://www.elias.cn/Python/HomePage)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.? 基本安裝
- http://www.python.org/官方標準Python開發(fā)包和支持環(huán)境,同時也是Python的官方網(wǎng)站;
- http://www.activestate.com/ 集成多個有用插件的強大非官方版本,特別是針對Windows環(huán)境有不少改進;
2.? Python文檔
- Python庫參考手冊
- Python 2.7 Tutorial 中文版(有可能需FQ)(Python 其他版本的教程翻譯見譯者主頁)
- Byte of Python可以代替Tutorial使用,有中文譯版的入門書籍。
- Dive into Python一本比較全面易懂的入門書,中文版翻譯最近進步為很及時的5.4了。英文版則正在寫針對Python 3.x的版本。
- 缺點是此書針對的Python版本比較陳舊,會給出一些過時的優(yōu)化建議,建議同時閱讀賴勇浩的<Dive into Python>大補貼。
- 《深入 Python 3》中文版
- Python社區(qū)官方建議采用的Python編碼風格(啄木鳥社區(qū)上的中文譯文)。相關的代碼檢查工具,參考:用PEP 8檢查Python Coding風格。
- Google SoC 建議的 Python 編碼風格 (Python 編碼風格指南中譯版(Google SOC))
- Google 原版的 Python 編碼風格指南 SoC 的那個指南基本上是在這個上面做的修改和增補。
- Google SoC 建議的 Python 編碼風格 (Python 編碼風格指南中譯版(Google SOC))
- Zoom.Quiet的文檔集(包括大量Python內(nèi)容)
- 豆瓣上的Python相關書籍推薦
- Pythonic到底是什么玩意兒?
- 啄木鳥社區(qū)上的Python資源索引
- 培訓素材:
- March Liu 的《Python速成指南》
- 簡單介紹類的可參考:IntroPy和在公司推廣python
- 實際編程能力培訓可參考沈仙人對他公司內(nèi)部的Python培訓素材:前言、基礎篇、面向?qū)ο蟆D形界面編程、網(wǎng)絡編程
2.1?推薦資源站點
- Parnassus山的拱頂巨大的Python代碼庫,包羅萬象。既可以從上面下載代碼參考學習,同時也是與Python有關程序的大列表。
- Python號星際旅行船著名Python社區(qū),代碼、文檔、高人這里都有。
- faqts.com的Python程序設計知識數(shù)據(jù)庫Python程序設計知識庫,都是與Python有關的程序設計問題及解決方法。
- 啄木鳥 Pythonic 開源社區(qū)著名的(也可以說是最好的)國內(nèi)Python開源社區(qū)。
- 賴勇浩推薦的幾個好玩又有難度的編程網(wǎng)站
2.2? 其他參考資料
- ZDNET文章:學習Python語言必備的資源
- Python編程技巧筆記
- 各種實用代碼片段
- 封裝字典結構使之可以通過實例屬性方式訪問的方法
- 如何獲得Python腳本所在目錄的位置
- 如何方便地給Python環(huán)境注冊新類庫
- Python幾種并發(fā)實現(xiàn)方案的性能比較
- Pythonic Web 應用平臺對比 現(xiàn)在個人對TurboGears 2和Pylons web.py(大致和KARRIGELL類似,都是類似于PHP那樣比較簡單的Python Web應用框架)和web2py 非常感興趣。近來Zope社區(qū)又出現(xiàn)了repoze.bfg這個解決方案,于是做應用時可以自由選用Zope中的合適部分了( Zope 社區(qū)的另一個發(fā)展方向是Grok,目標是敏捷易用又強大)。輕量級的除原來的web.py之外又有了Flask等等實現(xiàn)。另外還有Paste這樣的 WSGI 參考實現(xiàn)來幫助做自己的框架,比如Bottle就是一個基于 WSGI的 Web 開發(fā)框架。
- TurboGears2 要點筆記
- 在wxPython下進行圖像處理的經(jīng)驗(其實,僅使用wxPython也可以完成很多比較基礎的圖像處理工作,具體可以參照《wxPython in Action》一書的第12節(jié))
- 序列化存儲 Python 對象
- 通過win32擴展接口使用Python獲得系統(tǒng)進程列表的方法
- py2exe使用中遇到的問題
- idle的中文支持問題
2.3? 代碼示例
- http://newedit.tigris.org/technical.htmLimodou的NewEdit編輯器的技術手冊,討論了一些關于插件接口實現(xiàn)、i18實現(xiàn)、wxPython使用有關的問題,值得參考。
- 關于插件擴展機制:
- A Simple Plugin Framework 講解了一種非常聰明而簡單的辦法來為代碼提供插件接口。如果參考Java社區(qū)的類似框架,則有Java Plug-in Framework (JPF)以及OSGi標準。
- 另外limodou先生在Ulipad中實現(xiàn)插件和MixIn的機制也十分簡單有效,見[NewEdit]設計說明(一)--概述,當然在UliPad最新版本的代碼中對這個機制的實現(xiàn)又有實用的改進。(發(fā)布插件則有不少項目采用Python Eggs)
- 比較復雜的應用程序則可以使用Zope Component Architecture這樣的機制來實現(xiàn)靈活易用的擴展接口(注意:zca雖然是Zope平臺的一個組成部分,但其自身是不需要依賴Zope平臺即可使用的)。
3.? 常用工具
- http://www.scons.org/Java有Ant這個巨火的構建工具,Python的特性允許我們構建更新類型的構建工具,就是scons了。
- Python Sidebar for Mozilla FireFox的一個插件,提供一個用來查看Python文檔、函數(shù)庫的側邊欄。
- IPython很好用的Python Shell。
- Easy Install 快速安裝Python模塊的易用性解決方案(使用這種方式發(fā)行的包通常以Python Eggs的格式被Easy Install自動處理)。
- 一般推薦先用 virtualenv建個虛擬python環(huán)境再使用 easy_install (之后就不用加 --prefix參數(shù)了)(而且可以避免包與包之間相互影響)。
- pip:在包依賴處理等方面比 easy_install 更好的一個解決方案。
- Yolk:包信息管理工具,可以把已經(jīng)安裝的包的版本列出來。
- Mac下說setuptools版本過低的問題
- Fabric:Fabric 是一個自動化工具,它可以完成任意可以由腳本完成的事情,非常適合在本地操作遠程——你不需要一次又一次的SSH到遠程再進行部署。
3.1? Python IDE
我的IDE選擇經(jīng)驗 其實我現(xiàn)在只用Vim和Pydev了
- Pydev基于Eclipse的,非常棒的Python環(huán)境,改進速度非常快,現(xiàn)在是我最喜歡的IDE。
- ulipadPython+wxPython實現(xiàn)的輕量級全功能跨平臺IDE,非常好用。做一些簡單小東西的時候我會用這個。
- Eric Python IDE基于QT實現(xiàn)的非常不錯的跨平臺PYTHON IDE。支持調(diào)試,支持自動補全,甚至也支持重構。如果沒有ulipad,并且在我的gnome下基于QT的Eric界面別走形的話,我會選這個。
- Spyder 幾乎是個輕量化的 Eric ,也是基于 QT 和 QScintilla2 實現(xiàn)。它是科學計算包 python(x,y)(集成了科學計算常用的python第三方庫,有400多M)的一個組成部分。
- http://www.xored.comTrustudio 一個基于Eclipse的、同時支持Python和PHP的插件,曾經(jīng)是我最喜歡的Python IDE環(huán)境,功能相當全了,不過試用時感覺有些細節(jié)不完善以致不大好用。
- http://www-900.ibm.com/developerWorks/cn/opensource/os-ecant/index.shtml用 Eclipse 和 Ant 進行 Python 開發(fā)
- http://www.scintilla.org/同時支持Win和Linux的源代碼編輯器,似乎支持Python文件的編輯。
- http://boa-constructor.sourceforge.net/著名的基于WxPython的GUI快速生成用的Python IDE,但是開發(fā)進度實在太差了……
- http://pype.sourceforge.net/成熟的Python代碼編輯器,號稱功能介于EMACS和IDLE之間的編輯器。
- http://www.stani.be/python/speSPE:號稱是一個Full Featured編輯器,集成WxGlade支持GUI設計。
- eggy 用Python和QT實現(xiàn)的Python IDE,據(jù)說輕量又好用~
3.2? 內(nèi)置類庫使用參考
- Python正則表達式操作指南
- 為方便調(diào)試正則表達式,可以用KODOS(基于 PyQT )、kiki(基于 wxPython )、Pyreb(基于 wxPython )中的任何一個來輔助。
- 我目前用的是 kiki,但最近它的官方網(wǎng)站登陸不上去,我從 Debian 包把它的源碼扒出來,應用了 stani 做的wxPython 2.8 兼容性補丁,并且用py2app把它封裝成 Mac 應用程序供 QuickSilver 調(diào)用。修改以后的源代碼包下載。
3.3? 常用第三方類庫
- NumPyPython的數(shù)學運算庫,有時候一些別的庫也會調(diào)用里面的一些功能,比如數(shù)組什么的;
- PilPython下著名的圖像處理庫Pil;
- SimPy利用Python進行仿真、模擬的解決方案;
- Matplotlib據(jù)說是一個用來繪制二維圖形的Python模塊,它克隆了許多Matlab中的函數(shù), 用以幫助Python用戶輕松獲得高質(zhì)量(達到出版水平)的二維圖形;
- Graphviz 與 Matplotlib 不同,這個東西能畫:有向圖、網(wǎng)絡結構、有限狀態(tài)機等等。本身不是 Python 實現(xiàn)的,但是能找到 Python 封裝。
- Cryptopython的加解密擴展模塊;
- 另外還有 Google 發(fā)起的 Keyczar 加密庫項目。
- Python for CJK提供與python有關的CJK語言支持功能:轉(zhuǎn)碼、顯示之類。
- Psyco、Pyrex:兩個用于提高Python代碼運行效率的解決方案;如果對性能還不滿意,可以試試這樣:用 Python 寫自己的 C Module。
- Pyflakes、PyChecker、PyLint:都是用來做Python代碼語法檢查的工具。
- 圖形界面開發(fā)庫:
- Tk:這個本來是 Python 默認自帶的圖形界面庫,簡單好用但是大家總覺得丑。其實加上它的外觀擴展Tk Themed Widgets (ttk)會好看很多很多,這樣既不損失任何 Tk 的特性,而且代碼改動量也非常小。
- wxPython 基于wxWindows的易用且強大的圖形界面開發(fā)包wxPython;wxPython發(fā)行版還自帶了PyCrust、PyShell、PyAlaCarte和PyAlaMode等幾個工具,分別是圖形界面Shell和代碼編輯器等,分別具有不同特點可以根據(jù)自己的需要選用。
- PyQt 一般認為綜合各平臺上的表現(xiàn),PyQt比wxPython能提供更為可靠的表現(xiàn),較少遇到稀奇古怪的Bug。只是Qt雖然LGPL了,可是PyQt對商業(yè)軟件仍然是收費的,Nokia剛開始做LGPL的Qt綁定——PySide,但是還談不上成熟。
- 在Mac上安裝PyQt的詳細步驟 PyQt在Win和Linux上都有可直接安裝的二進制包,只有Mac沒有。不過按照這篇文檔來做,也是不難(我已試過,一切靠譜)。
- PyGtkQt永遠的競爭者,在Win和Linux下表現(xiàn)都還不錯,Mac下新的本地化移植繞過了系統(tǒng)自帶的X11服務,性能大為提升,只是對輸入法和字體支持等還有欠缺。
- 先按照Building GTK-OSX安裝GTK-OSX,然后按照Gtk+ Python頁的說明安裝PyGtk即可,非常容易。
- Tornado 非阻塞、高性能、可擴展的 Web Server 實現(xiàn),源自FriendFeed。
- http://avc.inrim.it/html/比MVC模式更方便易用的開發(fā)框架,主要是幫助透明地完成界面控件與后臺數(shù)據(jù)之間的內(nèi)容綁定。該框架支持GTK、QT、TK、wxWidgets等主要具有Python封裝的GUI開發(fā)框架。
- pygame用Python幫助開發(fā)游戲的庫,也可以用這個來播放視頻或者音頻什么的,大概依靠的是SDL;
- py2exe win下將Python程序編譯為可執(zhí)行程序的工具,是一個讓程序脫離Python運行環(huán)境的辦法,也可以生成Windows服務或者COM組件。其他能完成Python腳本到可執(zhí)行文件這個工作的還有Gordon McMillan's Installer、Linux/Unix專用的freeze、Mac專用的py2app,另外setuptools可能也能幫上點。不過此類工具難免與一些模塊有一些兼容性的問題,需要現(xiàn)用現(xiàn)測一下。總之這個主題可以參考How to Distribute Commercial Python Applications。
- 嵌入式數(shù)據(jù)庫:BerkeleyDB的Python版,當然還有其他的好多。
- PEAK提供一些用于實現(xiàn)自動化集群測試的重要基礎類庫,比如超輕量線程框架、分布式代碼執(zhí)行等。
- greenlet 是PEAK給出的一種進程內(nèi)的線程模型實現(xiàn),自稱是Stackless項目的副產(chǎn)品。其實這是一種偽線程,也就是說greenlet間切換需要明確指定下一步切換到哪塊指令繼續(xù)執(zhí)行,而沒有被執(zhí)行的代碼就被暫時掛起了。這里面greenlet間的執(zhí)行順序是完全確定的,并且是非并發(fā)的,就不能解決長時間大量資源占用的操作會導致程序無響應的問題。但greenlet可以用來減少資源死鎖、互斥造成的資源消耗(代碼被阻塞時,可以切換先去執(zhí)行其他未被阻塞的部分),因此用來響應按鈕點擊等是挺好用的。
- greenlet 現(xiàn)在不再是 pylib 的組成部分了,而是一個獨立的名為 greenlet 的 pypi 包,可以通過 easy_install 安裝。
- Eventlet 是基于 greenlet 完成的一個高并發(fā)網(wǎng)絡庫,提供“線程”池、消息隊列等許多非常方便的機制,比直接用 greenlet 要方便得多。并且 Eventlet 源自著名的虛擬現(xiàn)實項目——第二人生,是經(jīng)過現(xiàn)實考驗的可靠解決方案。
- greenlet 是PEAK給出的一種進程內(nèi)的線程模型實現(xiàn),自稱是Stackless項目的副產(chǎn)品。其實這是一種偽線程,也就是說greenlet間切換需要明確指定下一步切換到哪塊指令繼續(xù)執(zhí)行,而沒有被執(zhí)行的代碼就被暫時掛起了。這里面greenlet間的執(zhí)行順序是完全確定的,并且是非并發(fā)的,就不能解決長時間大量資源占用的操作會導致程序無響應的問題。但greenlet可以用來減少資源死鎖、互斥造成的資源消耗(代碼被阻塞時,可以切換先去執(zhí)行其他未被阻塞的部分),因此用來響應按鈕點擊等是挺好用的。
- Pyro一個Python的分布式對象系統(tǒng),提供面向?qū)ο箫L格的RPC功能。
- Protocol BuffersGoogle提供的高效數(shù)據(jù)序列化解決方案,比基于XML的數(shù)據(jù)序列化方案在數(shù)據(jù)大小和編解碼效率上都大約高一個數(shù)量級。當然,Google自己也說這種辦法也不是用哪都合適,一來Protocol Buffers不大適合用來處理格式化的文本,另一方面其本質(zhì)是一個傳輸協(xié)議的生成語言,可能在傳輸?shù)膬?nèi)容相對固定時,才值得專門生成一套這樣的解析器。
- Thrift:Facebook 開源出來的一個類似解決方案,優(yōu)點是能支持更多平臺和更多語言,形成一個更通用的二進制網(wǎng)絡服務接口。豆瓣在逐步轉(zhuǎn)向服務化,據(jù)稱大量使用了 Thrift ,并利用Paste Script簡化 Thrift 的使用、管理和部署。
- pyinotify利用操作系統(tǒng)自身提供的Notify機制以最高的效率監(jiān)控文件變化。
- PycURL 傳說這是實現(xiàn)Python下多線程網(wǎng)頁抓取的效率最高的解決方案,本質(zhì)是對libcurl C語言庫的封裝。其實Twisted也可以定制成為一個網(wǎng)頁抓取工具的。
- Scrapy是一個網(wǎng)絡爬蟲框架,可以非常容易地通過定制規(guī)則得到所需的爬網(wǎng)器。基于 Twisted 實現(xiàn)。
- Larbin:似乎是 C++ 語言實現(xiàn)的一個多用途爬蟲,號稱性能很強,但目前不確定是否有 Python 封裝。
- Python 可以通過 pamie 控制 IE 瀏覽器,通過 jssh 控制 Firefox ,主要目的是能比較完善地處理 Javascript 等。
- twill:Web 訪問的自動化工具,有命令行界面和 Python API 。可以填寫表單、支持 cookies 等,因此可以用作 Web 的自動化測試工具。
- mechanize是一個與之類似的東西,不過似乎使用起來比 twill 復雜一些,并且即使是這東西也仍然不支持 Javascript 的執(zhí)行。
- pyv8:這是 Google V8 Javascript 引擎的 Python 封裝,也就是說可以利用這個橋接器在 Python 里頭運行 Javascript 代碼。
- chardet 一個猜測網(wǎng)頁編碼(比如utf-8還是gb18030)的庫,會根據(jù)HTTP參數(shù)、HTML標簽、XML標簽中的相關聲明來進行猜測。另有一個非Python實現(xiàn)的Enca也可以提供類似的功能。
- μTidylib著名html整理、排錯、自動修正工具HTML Tidy Library的Python封裝。通常在正式開始分析html之前,先用這個東西預處理一下,后面的工作會輕松、準確得多~
- JPype Python里調(diào)用Java類庫、Java代碼的橋接解決方案(因Limodou在ChinaUnix上提及而得知)。JPype使用要點
- Fudge被HD的項目組認為是最好的Python Mock模塊(也即冒煙測試)。
- nose 測試腳本自動發(fā)現(xiàn)、自動執(zhí)行輔助工具。文檔見nose documentation。
- Coverage.pyPython 測試代碼覆蓋率統(tǒng)計工具,已經(jīng)內(nèi)置于 nose 。
- Heapy 對 Python 程序進行內(nèi)存占用剖析的模塊,Guppy-PE項目的組成部分之一,被 Scrapy 等項目用作內(nèi)存泄露的調(diào)試工具。類似的還有:
- PySizer,感覺已經(jīng)太舊了。
- Dowser,和 Heapy 特點不太一樣,并且使用CheeryPy作為調(diào)試結果的輸出界面。
- Gluttony Python 模塊之間依賴關系圖的自動生成工具。
3.4? 其他東西
- http://www.forum.nokia.com/main/0,,034-821,00.html Nokia居然發(fā)布了在Series 60系統(tǒng)上運行Python程序(圖形界面用wxPython)的庫,還有一個Wiki頁是關于這個的:http://www.postneo.com/postwiki/moin.cgi/PythonForSeries60 。Python4Symbian這個頁面是記錄的我的使用經(jīng)驗。
- pyre:使用Python完成高性能計算需求的包,真的可以做到么?還沒研究。
- Parallel Python:純Python的并行計算解決方案。相關中文參考頁面
- Pexpect:用Python作為外殼控制其他命令行程序的工具(比如Linux下標準的ftp、telnet程序什么的),還沒有測試可用程度如何。
- pyjamas:Google GWT的Python克隆,還處在早期版本階段。
- Durus:Python的對象數(shù)據(jù)庫,當然也可以作為一種對象實例持久化的機制來使用;這是一個開源的純Python實現(xiàn),并提供一個可選的C語言插件來大幅提高運行效率。
- Missile DB:一種 Python 的、簡潔高效的 DBMS,自稱是Durus的一種衍生品,更能夠適應Stackless Python環(huán)境。同時也是并發(fā)性能極高的Eurasia3項目的一個子項目。
- ey-lessql:收集的各種分布式鍵值數(shù)據(jù)庫的Python版驅(qū)動。如果不考慮Python驅(qū)動的問題,A Yes for a NoSQL Taxonomy是一個非常完整的非SQL數(shù)據(jù)存儲引擎列表。
- NoSQL數(shù)據(jù)庫探討之一 - 為什么要用非關系數(shù)據(jù)庫?
- NOSQL Patterns
- 目前我最感興趣的鍵值數(shù)據(jù)庫是MongoDB,有人認為它基本上已經(jīng)可以替代MySQL所能提供的功能,并且性能更高!
- Ming可能是類似 ORM 對關系數(shù)據(jù)庫所起作用的 MongoDB的 Python 封裝?
- pymodels MongoDB的輕量級 ORM 封裝,它本來是用于 Tokyo Tyrant 和 Tokyo Cabinet 的。
- MongoEngine:Quora 上有人推薦說這個是 Django ORM 風格的 MongoDB Python 封裝,可是其官網(wǎng)上怎么說這是一個 object-document mapper ?
- pyzmq:消息隊列 zerozmq 的 Python 封裝,基本上這是一個追求性能為主的消息隊列實現(xiàn),全部數(shù)據(jù)在內(nèi)存中保存。如果擔心數(shù)據(jù)持久化的問題,可以考慮 RabbitMQ 等類似方案。另據(jù)傳聞,Twitter已經(jīng)由RabbitMQ轉(zhuǎn)換到Kestrel。
- Blinker:對象間消息解耦解決方案。具體情況還沒研究。。
- Mulib和 restish 都是基于 Python 實現(xiàn)的 REST 風格網(wǎng)絡服務框架。
- Scapy:似乎是一個能夠控制底層網(wǎng)絡封包的交互式Python工具,對網(wǎng)絡協(xié)議分析應該很有用。
3.5? 有意思的東西
- Howie:用Python實現(xiàn)的MSN對話機器人。
- Cankiri:用一個Python腳本實現(xiàn)的屏幕錄像機。
3.6? 普通但沒準有用的東西
- pyForum:純Python實現(xiàn)的論壇程序中最接近實用程度的一個,基于web2py實現(xiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2344150.html
總結
以上是生活随笔為你收集整理的python 学习经验 转自(http://www.elias.cn/Python/HomePage)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Adobe Flash Player(F
- 下一篇: Photoshop CS5完全自学实战实