怎么能快速地掌握Python?這是和朋友閑聊時談起的問題。
Python包含的內容很多,加上各種標準庫、拓展庫,亂花漸欲迷人眼。我一直希望寫一個快速的、容易上手的Python教程,而且言語簡潔,循序漸進,讓沒有背景的讀者也可以從基礎開始學習。我將在每一篇中專注于一個小的概念,希望在閑暇時可以很快讀完。
小提醒
- 教程將專注于Python基礎,語法基于Python 2.7 (我會提醒Python 3.x中有變化的地方,以方便讀者適應3.X的情況)。測試環境為Linux。標準庫的一些包不適用于Windows平臺。如果文中的程序無法在你的平臺上運行,歡迎討論。
- 我將專注于Python的主干,以便讀者能以最快時間對Python形成概念。
- Linux命令行將以$開始,比如 $ls, $python
- Python命令行將以>>>開始,比如 >>>print 'Hello World!'
- 注釋會以#開始
建議
- 將教程中的命令敲到Python中看看效果。
- 看過教程之后,可以進行一些練習。
- 參與文章評論區的討論,可以更好的積累經驗。
教程內容
從最初的“Hello World”,走到面向對象。該回過頭來看看,教程中是否遺漏了什么。
我們之前提到一句話,"Everything is Object". 那么我們就深入體驗一下這句話。
需要先要介紹兩個內置函數,dir()和help()
dir()用來查詢一個類或者對象所有屬性。你可以嘗試一下
>>>print dir(list)
help()用來查詢的說明文檔。你可以嘗試一下
>>>print help(list)
(list是Python內置的一個類,對應于我們之前講解過的列表)
list是一個類
在上面以及看到,表是Python已經定義好的一個類。當我們新建一個表時,比如:
>>>nl = [1,2,5,3,5]
實際上,nl是類list的一個對象。
實驗一些list的方法:
>>>print nl.count(5) # 計數,看總共有多少個5
>>>print nl.index(3) # 查詢 nl 的第一個3的下標
>>>nl.append(6) # 在 nl 的最后增添一個新元素6
>>>nl.sort() # 對nl的元素排序
>>>print nl.pop() # 從nl中去除最后一個元素,并將該元素返回。
>>>nl.remove(2) # 從nl中去除第一個2
>>>nl.insert(0,9) # 在下標為0的位置插入9
總之,list是一個類。每個列表都屬于該類。
Python補充中有list常用方法的附錄。
運算符是特殊方法
使用dir(list)的時候,能看到一個屬性,是__add__()。從形式上看是特殊方法(下劃線,下劃線)。它特殊在哪呢?
這個方法定義了"+"運算符對于list對象的意義,兩個list的對象相加時,會進行的操作。
>>>print [1,2,3] + [5,6,9]
運算符,比如+, -, >, <, 以及下標引用[start:end]等等,從根本上都是定義在類內部的方法。
嘗試一下
>>>print [1,2,3] - [3,4]
會有錯誤信息,說明該運算符“-”沒有定義。現在我們繼承list類,添加對"-"的定義
class superList(list):
def __sub__(self, b):
a = self[:] # 這里,self是supeList的對象。由于superList繼承于list,它可以利用和list[:]相同的引用方法來表示整個對象。
b = b[:]
while len(b) > 0:
element_b = b.pop()
if element_b in a:
a.remove(element_b)
return a
print superList([1,2,3]) - superList([3,4])
內置函數len()用來返回list所包含的元素的總數。內置函數__sub__()定義了“-”的操作:從第一個表中去掉第二個表中出現的元素。如果__sub__()已經在父類中定義,你又在子類中定義了,那么子類的對象會參考子類的定義,而不會載入父類的定義。任何其他的屬性也是這樣。
(教程最后也會給出一個特殊方法的清單)
定義運算符對于復雜的對象非常有用。舉例來說,人類有多個屬性,比如姓名,年齡和身高。我們可以把人類的比較(>, <, =)定義成只看年齡。這樣就可以根據自己的目的,將原本不存在的運算增加在對象上了。
下一步
希望你已經對Python有了一個基本了解。你可能躍躍欲試,要寫一些程序練習一下。這會對你很有好處。
但是,Python的強大很大一部分原因在于,它提供有很多已經寫好的,可以現成用的對象。我們已經看到了內置的比如說list,還有tuple等等。它們用起來很方便。在Python的標準庫里,還有大量可以用于操作系統互動,Internet開發,多線程,文本處理的對象。而在所有的這些的這些的基礎上,又有很多外部的庫包,定義了更豐富的對象,比如numpy, tkinter, django等用于科學計算,GUI開發,web開發的庫,定義了各種各樣的對象。對于一般用戶來說,使用這些庫,要比自己去從頭開始容易得多。我們要開始攀登巨人的肩膀了。
謝謝你的關注,
歡迎來到Python的世界。
總結
len() dir() help()
數據結構list(列表)是一個類。
運算符是方法
完整教程可查看:Python教程
作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!