生成器
帶有 yield 的函數在 Python 中被稱之為 generator(生成器)
def xragns(): #定義函數生成器 print('小伙') yield ('好') #加上yield就會生成一個生成器 print('python') yield('hao') print('編程') yield('hao') x = xragns() #執行函數生代器僅僅是獲得內部不會執行 ret = x.__next__() #生成器的next方法才會向下執行 執行函數尋找下一個yield print(ret) ret = x.__next__() #第二次執行會回到上次跳出的位置想下執行 print(ret) ret = x.__next__() print(ret)
迭代器
迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,知道所有的元素被訪問完結束。迭代器只能往前不能後退
ef xrange(n): #定義一個函數 start = 0 while True: #while循環 if start > n: #判斷如果值小於n return yield start #生成器退出 start += 1 #每循環到這都加一 for i in xrange(10): #迭代器 print(i) obj = xrange(5) #執行函數,這個時候內部不會執行生成器 n1 = obj.__next__() #生成器從上向下執行知道遇到的第一個yield n2 = obj.__next__() #生成器會回到上次跳出的位置繼續回去循環 n3 = obj.__next__() # 依次想下執行 n4 = obj.__next__() n5 = obj.__next__() n6 = obj.__next__() n7 = obj.__next__() print(n1,n2,n3,n4,n5,n6) #輸出所有的結果 #