方法中包含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)