生成器
帶有 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) #輸出所有的結果
#