1. 程式人生 > 其它 >vivo統一告警平臺建設與實踐

vivo統一告警平臺建設與實踐

一、生成器物件

    如果函式體程式碼裡含有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函式體程式碼直接結束

------------恢復內容結束------------