解析器在實時生成資料,資料不會駐留在記憶體中。因此,其執行效率很高!
yield 是乙個類似 return 的關鍵字,只是這個函式返回的是個生成器
當你呼叫這個函式的時候,函式內部的**並不立即執行 ,這個函式只是返回乙個生成器物件
當你使用for進行迭代的時候,函式中的**才會執行
list1 = (i**2 for i in range(10) if i%2==0)
for item in list1:
print(item)
def creategenerator():
for i in range(10):
if i%2==0:
yield i**2
mygenerator = creategenerator()
for item in mygenerator:
print(item)
迭代是python最強大的功能之一,是訪問集合元素的一種方式。
迭代器是乙個可以記住遍歷的位置的物件。
迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
迭代器有兩個基本的方法:iter() 和 next()。
字串,列表、元組和字典物件都可用於建立相應的迭代器
list1 = [2,3,4,56,78]
iter1 = iter(list1)
while true:
try:
print(next(iter1))
except stopiteration:
break
list1 = (i**2 for i in range(10) if i%2==0)
print(next(list1))
print(next(list1))
#結果為 0 4
裝飾器是個函式,用於日誌、事務、許可權等的程式設計(aop:面向切面程式設計),是非侵入式的程式設計方式
def loginfo(func):
print("---------------")
print("那誰登陸了我們的系統")
func()
print("那誰登陸了我們的系統")
@loginfo
def login():
print("歡迎誰誰誰登陸")
pass
python中生成器與迭代器
可迭代物件 乙個實現了iter方法的物件是可迭代的 迭代器 乙個實現了iter方法和next方法的物件就是迭代器 iter方法會返回乙個迭代器 生成器都是iterator物件,但list dict str雖然是iterable 可迭代物件 卻不是iterator 迭代器 from collectio...
Python中生成器和迭代器的區別
迭代器 iterator 是乙個實現了迭代器協議的物件,python的一些內建資料型別 列表,陣列,字串,字典等 都可以通過for語句進行迭代,我們也可以自己建立乙個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopiteration異常。生成器 genera...
python中生成器
生成器 生成器generator 生成器函式generator m i for i in range 5 定義乙個生成器 print type m 判斷m的型別,是乙個生成器 print next m 使用next函式 def inc 定義乙個inc函式 for i in range 5 yield...