生成器的作用:一條一條輸出,輸出一個獲取一個,不像return,輸出後就馬上返回,不能執行後面的函數。 !!!send 獲取下一個值的效果和next基本一致,但是獲取下一個值時,要給上一個yield的位置傳遞一個數據。 !!!第一次使用生成器時,是用next獲取下一個值,最後一個yield不能接受外 ...
#生成器 def generator(): for i in range(200): yield '哇哈哈%s' %i g = generator() #調用生成數函數,接受作用 ret = g.__next__() #每執行一次g.__next__就是從生成器取值 print(ret) ret = g.__next__() #每執行一次g.__next__就是從生成器取值
print(ret)
def generator(): for i in range(200): yield '哇哈哈%s' %i g = generator() #調用生成數函數,接受作用 ret = g.__next__() #每執行一次g.__next__就是從生成器取值 print(ret) ret = g.__next__() #每執行一次g.__next__就是從生成器取值 print(ret) num = 0 for i in g: num += 1 if num > 10: break print(i)
生成器的作用:一條一條輸出,輸出一個獲取一個,不像return,輸出後就馬上返回,不能執行後面的函數。
!!!send 獲取下一個值的效果和next基本一致,但是獲取下一個值時,要給上一個yield的位置傳遞一個數據。
!!!第一次使用生成器時,是用next獲取下一個值,最後一個yield不能接受外部的值
#next send def generator(): print(123) content = yield 1 print('======',content) print(456) yield 2 g = generator() #調用生成數函數,接受作用 ret = g.__next__() #每執行一次g.__next__就是從生成器取值 print('***',ret) ret = g.send('hello') #send的效果和next一樣 print('***',ret)
最後一個yield如果想使用的話,解決辦法如下:
def generator(): print(123) content = yield 1 print('======',content) print(456) arg = yield 2 '''''' yield