一、python語言是啥:
1.面向對象
python是一種面向對象的解釋型計算機程序設計語言
2.解釋型語言
(1)Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議 。
(2)和Java一樣Python依賴于解釋器,只不過Java依賴的是JVM,Python依賴的是PVM,Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節碼),然后再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。
3.主要用于哪里
(1)web開發
(2)爬蟲、數據分析、數據挖掘、機器學習。
(3)科學計算,生物計算。
(4)云計算。
(5)運維自動化。
(6)測試自動化。
(7)ERP管理系統開發。
(8)游戲開發。
具體點:
(1)圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
(2)數學處理:NumPy擴展提供大量與許多標準數學庫的接口。
(3)文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
(4)數據庫編程:程序員可通過遵循Python DB-API(數據庫應用程序編程接口)規范的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等數據庫通信。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。
(5)網絡編程:提供豐富的模塊支持sockets編程,能方便快速地開發分布式應用程序。很多大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在廣泛地使用它。
(6)Web編程:應用的開發語言,支持最新的XML技術。
(7)多媒體應用:Python的PyOpenGL模塊封裝了“OpenGL應用程序編程接口”,能進行二維和三維圖像處理。PyGame模塊可用于編寫游戲軟件。
(8)pymo引擎:PYMO全稱為python memories off,是一款運行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系統上的AVG游戲引擎。因其基于python2.0平臺開發,并且適用于創建秋之回憶(memories off)風格的AVG游戲,故命名為PYMO。
(9)黑客編程:python有一個hack的庫,內置了你熟悉的或不熟悉的函數,但是缺少成就感。
4.可擴充的
Python本身被設計為可擴充的。并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴充模塊;或者Java、Jython來編寫模塊,IronPython,.NET來編寫模塊。
5.文件結構
(1)python.exe在運行程序的時候,會彈出一個黑色的控制臺窗口(也叫命令行窗口、DOS/CMD窗口);
(2)pythonw.exe是無窗口的Python可執行程序,意思是在運行程序的時候,沒有窗口,代碼在后臺執行。
(3)安裝視窗版 Python 時,擴展名為 .py 的文件被默認為用 python.exe 運行的文件,而 .pyw文件則被默認為用 pythonw.exe 運行。
可用python + 文件位置(C:\Users\Liurenquan\Desktop\test.python)執行python,但是要先配置環境變量。
6.標準庫
Tkinter
Python默認的圖形界面接口。Tkinter是一個和Tk接口的Python模塊,Tkinter庫提供了對Tk API的接口,它屬于Tcl/Tk的GUI工具組。
PyGTK
用于python GUI程序開發的GTK+庫。GTK就是用來實現GIMP和Gnome的庫。
PyQt
用于python的Qt開發庫。QT就是實現了KDE環境的那個庫,由一系列的模塊組成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300個類和超過5750個的函數和方法。PyQt還支持一個叫qtext的模塊,它包含一個QScintilla庫。該庫是Scintillar編輯器類的Qt接口。
wxPython
GUI編程框架,熟悉MFC的人會非常喜歡,簡直是同一架構(對于初學者或者對設計要求不高的用戶來說,使用Boa Constructor可以方便迅速的進行wxPython的開發)
PIL
python提供強大的圖形處理的能力,并提供廣泛的圖形文件格式支持,該庫能進行圖形格式的轉換、打印和顯示。還能進行一些圖形效果的處理,如圖形的放大、縮小和旋轉等。是Python用戶進行圖象處理的強有力工具。
Psyco
一個Python代碼加速度器,可使Python代碼的執行速度提高到與編譯語言一樣的水平。
xmpppy
Jabber服務器采用開發的XMPP協議,Google Talk也是采用XMPP協議的IM系統。在Python中有一個xmpppy模塊支持該協議。也就是說,我們可以通過該模塊與Jabber服務器通信,是不是很Cool。
PyMedia
用于多媒體操作的python模塊。它提供了豐富而簡單的接口用于多媒體處理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平臺下使用。
Pmw
Python megawidgets,Python超級GUI組件集,一個在python中利用Tkinter模塊構建的高級GUI組件,每個Pmw都合并了一個或多個Tkinter組件,以實現更有用和更復雜的功能。
PyXML
用Python解析和處理XML文檔的工具包,包中的4DOM是完全相容于W3C DOM規范的。它包含以下內容:
xmlproc: 一個符合規范的XML解析器。Expat: 一個快速的,非驗證的XML解析器。還有其他和他同級別的還有 PyHtml PySGML。
PyGame
用于多媒體開發和游戲軟件開發的模塊。
PyOpenGL
模塊封裝了“OpenGL應用程序編程接口”,通過該模塊python程序員可在程序中集成2D和3D的圖形。
NumPy、NumArray、SAGE
NumArray是Python的一個擴展庫,主要用于處理任意維數的固定類型數組,簡單說就是一個矩陣庫。它的底層代碼使用C來編寫,所以速度的優勢很明顯。SAGE是基于NumPy和其他幾個工具所整合成的數學軟件包,目標是取代Magma, Maple, Mathematica和Matlab 這類工具。
MySQLdb
用于連接MySQL數據庫。還有用于zope的ZMySQLDA模塊,通過它就可在zope中連接mysql數據庫。
Sqlite3
用于連接sqlite數據庫。
Python-ldap
提供一組面向對象的API,可方便地在python中訪問ldap目錄服務,它基于OpenLDAP2.x。
smtplib
發送電子郵件。
ftplib
定義了FTP類和一些方法,用以進行客戶端的ftp編程。如果想了解ftp協議的詳細內容,請參考RFC959。
PyOpenCL
OpenCL的Python接口,通過該模塊可以使用GPU實現并行計算。
7.例子
用Python寫簡單爬蟲
首先,要通過urllib2這個Module獲得對應的HTML源碼。
import urllib2 #調用urllib2
url='http://www.baidu.com/s?wd=cloga' #把等號右邊的網址賦值給url
html=urllib2.urlopen(url).read() #html隨意取名 等號后面的動作是打開源代碼頁面,并閱讀
print html #打印
通過上面這三句就可以將URL的源碼存在content變量中,其類型為字符型。
接下來是要從這堆HTML源碼中提取我們需要的內容。用Chrome查看一下對應的內容的代碼(也可以用Firefox的Firebug)。
可以看到url的信息存儲在span標簽中,要獲取其中的信息可以用正則式。