1.裝飾器
裝飾器相當於乙個閉包,可以從函式中抽取大量與功能無關的**放在裝飾器函式中,裝
飾器函式和被裝飾函式都可以接受引數,
def zhuangshiqi(abc):
def _zhuang(foo): 由於裝飾器函式接收引數所以多加乙個函式
print u'我是裝飾器'
print abc
foo(*args,**kwargs)
return _zhuang
@zhuangshiqi(abc='abc')
def a(num1,num2):
print num1+num2
2.迭代器和生成器
聯絡:兩者都是可以記錄狀態,通過next()方法呼叫下乙個,惰性載入(所以可以用來處理無限數
列不必擔心像列表那樣記憶體會被撐爆)不可重用,節省記憶體。呼叫一般通過for迴圈呼叫實
例物件,避免內容全部迭代完後報錯
區別:生成器是使用yield建立的
迭代器可以使用iter(可迭代物件)或者自建類實現__iter__和__next__方法這兩種方式建立
生成器更加簡單
3.yield
有yield的函式可以理解為是乙個生成器,yield和return做對比的話好理解,return 返回
乙個值並終結當前函式,yield返回乙個值,函式繼續執行
生成器 迭代器
最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...
迭代器,生成器
迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...
迭代器 生成器
迭代器 iter 可迭代物件 下乙個元素的值 next 可迭代物件 類中實現 iter 方法 提供迭代器 實現迭代器 import time class mylistiter object 迭代器類 def init self,data self.data data self.index 0 def...