Python
Python介紹
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種面向對象、直譯式的計算機程序語言,具有近二十年的發展歷史。它包含了一組功能完備的標準庫,能夠輕鬆完成很多常見的任務。它的語法簡單,與其它大多數程序設計語言使用大括號不一樣,它使用縮進來定義語句塊。
與Scheme、Ruby、Perl、Tcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理內存使用。它經常被當作腳本語言用於處理系統管理任務和網絡程序編寫,然而它也非常適合完成各種高級任務。Python虛擬機本身幾乎可以在所有的作業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python源代碼轉換成可以脫離Python解釋器運行的程序。
Python的官方解釋器是CPython,該解釋器用C語言編寫,是一個由社區驅動的自由軟件,目前由Python軟件基金會管理。
Python支持命令式程序設計、面向對象程序設計、函數式編程、面向側面的程序設計、泛型編程多種編程範式。
Python與Matlab的比較
說起科學計算,首先會被提到的可能是MATLAB。然而除了MATLAB的一些專業性很強的工具箱還無法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相應的擴展庫。和MATLAB相比,用Python做科學計算有如下優點:
- 首先,MATLAB是一款商用軟件,並且價格不菲。而Python完全免費,衆多開源的科學計算庫都提供了Python的調用接口。用戶可以在任何計算機上免費安裝Python及其絕大多數擴展庫。
- 其次,與MATLAB相比,Python是一門更易學、更嚴謹的程序設計語言。它能讓用戶編寫出更易讀、易維護的代碼。
- 最後,MATLAB主要專注於工程和科學計算。然而即使在計算領域,也經常會遇到文件管理、界面設計、網絡通信等各種需求。而Python有着豐富的擴展庫,可以輕易完成各種高級任務,開發者可以用Python實現完整應用程序所需的各種功能。
Python與大數據
- Matplotlib
用Python實現的類matlab的第三方庫,用以繪製一些高質量的數學二維圖形。 - SciPy
基於Python的matlab實現,旨在實現matlab的所有功能。 - NumPy
基於Python的科學計算第三方庫,提供了矩陣,線性代數,傅立葉變換等等的解決方案。 - PyGtk
基於Python的GUI程序開發GTK+庫。 - PyQt
用於Python的QT開發庫。 - WxPython
Python下的GUI編程框架,與MFC的架構相似。
著名的第三方框架
- Django
開源Web開發框架,它鼓勵快速開發,並遵循MVC設計,開發週期短。 - Flask
輕量級的Web框架。 - ActiveGrid
企業級的Web2.0解決方案。 - Karrigell
簡單的Web框架,自身包含了Web服務,py腳本引擎和純python的數據庫PyDBLite。 - Tornado
一個輕量級的Web框架,內置非阻塞式服務器,而且速度相當快 - webpy
一個小巧靈活的Web框架,雖然簡單但是功能強大。 - CherryPy
基於Python的Web應用程序開發框架。 - Pylons
基於Python的一個極其高效和可靠的Web開發框架。 - Zope
開源的Web應用服務器。 - TurboGears
基於Python的MVC風格的Web應用程序框架。 - Twisted
流行的網絡編程庫,大型Web框架。 - Quixote
Web開發框架。
Python學習網站
- http://www.runoob.com/python3/python3-tutorial.html
- http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
- 介紹SciPy
http://old.sebug.net/paper/books/scipydoc/scipy_intro.html#weavec - 介紹 numpy
http://old.sebug.net/paper/books/scipydoc/numpy_intro.html - 介紹sympy
http://old.sebug.net/paper/books/scipydoc/sympy_intro.html - 介紹matplotlib
http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html - 全面介紹python
http://old.sebug.net/paper/books/scipydoc/index.html#id2