到目前為止,我們已經學習了絕大多數常用的Python知識。在這一章中,我們將要學習另外一些方面的Python知識,從而使我們對Python的瞭解更加 完整 。
特殊的方法
在類中有一些特殊的方法具有特殊的意義,比如__init__
和__del__
方法,它們的重要性我們已經學習過了。
一般說來,特殊的方法都被用來模仿某個行為。例如,如果你想要為你的類使用x[key]
這樣的索引操作(就像列表和元組一樣),那麼你只需要實現__getitem__()
方法就可以了。想一下,Python就是對list
類這樣做的!
下面這個表中列出了一些有用的特殊方法。如果你想要知道所有的特殊方法,你可以在《Python參考手冊》中找到一個龐大的列表。
表15.1 一些特殊的方法
名稱 |
說明 |
__init__(self,...) |
這個方法在建立對象恰好要被返回使用之前被調用。 |
__del__(self) |
恰好在對象要被刪除之前調用。 |
__str__(self) |
在我們對對象使用print 語句或是使用str() 的時候調用。 |
__lt__(self,other) |
當使用 小於 運算子(<)的時候調用。類似地,對於所有的運算子(+,>等等)都有特殊的方法。 |
__getitem__(self,key) |
使用x[key] 索引操作符的時候調用。 |
__len__(self) |
對序列對象使用內建的len() 函數的時候調用。 |
單語句塊
現在,你已經很深刻地理解了每一個語句塊是通過它的縮排層次與其它塊區分開來的。然而這在大多數情況下是正確的,但是並非100%的準確。如果你的語句塊只包含一句語句,那麼你可以在條件陳述式或迴圈語句的同一行指明它。下面這個例子清晰地說明了這一點:
>>> flag = True
>>> if flag: print 'Yes'
...
Yes
就如你所看見的,單個語句被直接使用而不是作為一個獨立的塊使用。雖然這樣做可以使你的程式變得 小一些 ,但是除了檢驗錯誤之外我強烈建議你不要使用這種縮減方法。不使用它的一個主要的理由是一旦你使用了恰當的縮排,你就可以很方便地添加一個額外的語句。
另外,注意在使用互動模式的Python解譯器的時候,它會通過恰當地改變提示符來協助你輸入語句。在上面這個例子中,當你輸入了關鍵字if
之後,Python解譯器把提示符改變為...
以表示語句還沒有結束。在這種情況下,我們按斷行符號鍵用來確認語句已經完整了。然後,Python完成整個語句的執行,並且返回原來的提示符並且等待下一句輸入。
列表綜合
通過列表綜合,可以從一個已有的列表匯出一個新的列表。例如,你有一個數的列表,而你想要得到一個對應的列表,使其中所有大於2的數都是原來的2倍。對於這種應用,列表綜合是最理想的方法。
使用列表綜合
例15.1 使用列表綜合
#!/usr/bin/python
# Filename: list_comprehension.py
listone = [
2
,
3
,
4
]
listtwo = [
2
*i
for
i
in
listone
if
i >
2
]
print
listtwo