vivo統一告警平臺建設與實踐
阿新 • • 發佈:2021-11-18
一、生成器物件
如果函式體程式碼裡含有yield關鍵字,在呼叫函式,函式體程式碼不會執行,而是將函式變成了生成器,得到的值就稱為生成器物件。
def index(): print('hello') yield 123 res = index() print(res.__next__())
二、自定義range功能
利用yield可以實現自定義迭代器,我們可以嘗試實現一下基本的range的功能
def my_range(start, stop=None, step=1): if not stop: stop = start start = 0 while start < stop: yield start start += step res = my_range(10) for i in res: print(i)
三、yield傳值
def my_func(name): print('%s' % name) res = yield print('%s正在%s' % (name, res)) yield res1 = my_func('mike') res1.__next__() res1.send('哈哈')
四、yield與return對比
yield
1.yield可以返回值(支援多個並組織成元組)
2.遇到yield函式體程式碼不會結束而是會阻塞
3.yield還可以是傳值的一種方式
return
1.return可以返回值(支援多個並組織成元組)
2.遇到return函式體程式碼直接結束
------------恢復內容結束------------