Python3 yield表達式的使用

方法中包含yied表達式後,Python會將其視作generator對象,不再是普通的方法。

下面舉例說明該表達式的具體使用:

def test():
    print("generator start")
    n = 0
    while True:
        yield_expression_value = yield n
        print("yield_expression_value = %d" % yield_expression_value)
        n += 1


# 創建generator對象
generator = test()
print(type(generator))

print("\n---------------\n")

# 啓動generator,next方法和send(None)起到的作用相同
# 啓動generator後,僅會執行到yield表達式的右側,不會給左側賦值;再次恢復執行generator時才能執行到賦值操作
next_result = generator.__next__()
print("next_result = %d" % next_result)

print("\n---------------\n")

# 發送值給yield表達式的左側, 並接收yield表達式的右側的結果
send_result = generator.send(666)
print("send_result = %d" % send_result)

執行結果:

<class 'generator'>

---------------

generator start
next_result = 0

---------------

yield_expression_value = 666
send_result = 1

方法說明:

__next__()方法: 作用是啓動或者恢復generator的執行,相當於send(None)

send(value)方法:作用是發送值給yield表達式。如果是啓動generator必須調用send(None)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章