鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python/ 表達(dá)式賦值沒返回值還是為none

表達(dá)式賦值沒返回值還是為none

#!/usr/bin/python 
print("Hello, World!");
def h():
        print ("hello")
        m = yield 5
        print ("m:", m)
        d = yield 12
        print ("d:",d )
        print ("world")
c = h()
c.__next__()  # hello  # 5
c.__next__()  # m: None  # 12
c.__next__()

如上面提到的,調(diào)用next方法時,

  1. =(yield 5)

?右邊返回 5,卻沒有賦值給 m,是因為,在python中不支持表達(dá)式賦值嗎?還是返回none
?
?

回答
編輯回答
我以為

如下為生成器的 next() 函數(shù)的描述

開始生成器函數(shù)的執(zhí)行或者在最后一次執(zhí)行的yield表達(dá)式處恢復(fù)執(zhí)行。當(dāng)生成器函數(shù)使用next()方法恢復(fù)執(zhí)行時,當(dāng)前的yield表達(dá)式始終None。然后執(zhí)行繼續(xù)行進到下一個yield表達(dá)式,在那里生成器被再次掛起并返回expression_list的值給next()的調(diào)用者。

即你在第一次 yield 5 后,,這個時候 m= 這個賦值操作根本沒有執(zhí)行,然后,第二次使用 next 時, 當(dāng)前的 yield 表達(dá)式為 None,即 m=None

2017年9月11日 12:07