內建函式len()用於返回物件的長度,其實參在預設情況下不能是自定義類物件的例項物件。
如果想讓內建函式len()的實參可以是自定義類物件的例項物件,必須在自定義類物件中實現特殊方法 __ len __(),這樣,呼叫內建函式len()時,在其內部會自動呼叫實參所對應類物件的特殊方法 __ len __()。
生成器表示式 (i * i for i in range (8))
檢視生成器對應的元素,有兩種方式,一種是多次呼叫函式next(),每次呼叫都返回生成器的下乙個元素,直到丟擲異常提示stopiteration時表示沒用更多的元素了。。。第二種是使用for in語句對生成器迭代,這樣就不用關心異常stopiteration了
生成器中不是儲存其對應的所有元素,而是儲存對應的演算法,因此,生成器是惰性運算,只用當用到生成器中的元素時,才會進行過臨時推算,並不會提前運算出來
如果需要建立乙個元素個數較大的容器,就可以考慮使用生成器,從而節省大量記憶體空間
生成器函式yield
生成器函式中通過關鍵字yield返回推算出的元素。生成器函式與普通的函式區別在於:當呼叫內建函式next()或使用for in語句迭代時,執行完yield語句就會將生成器函式掛起,下次會從掛起的地方繼續執行
迭代器可以用於for in 語句的物件稱為可迭代(iteration)物件,例如:range、列表、元組、字串、字典、集合、生成器
可以呼叫內建函式isinstance()判斷乙個物件是否是可迭代物件。
如果乙個可迭代物件可以作為內建函式next()的實參從而支援惰性運算,那麼該物件稱為迭代器(iterator)物件
生成器是迭代器的一種,可以呼叫內建函式isinstance()判斷乙個物件是否為可迭代物件
可以呼叫內建函式iter()將不支援惰性運算的可迭代物件轉換為迭代器物件
如果乙個物件同時實現了特殊方法 __ iter __()和 __ next __(),那麼該物件也稱為迭代器物件。如果將該物件用於for in語句,會首先呼叫特殊方法 __iter __(),然後不斷呼叫該可迭代物件的特殊方法 __ next __(),直到遇見stopiteration對出迴圈
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
物件導向程式設計
物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...
物件導向程式設計
class team def init self self.name tampa bay buccaneers bucs team print bucs.name tampa bay buccaneers 當呼叫team 函式時,會自動呼叫init函式,self是自動傳入到init中的引數,它指向當...