之前我寫過一篇文章專門在講yield,對yield不了解的朋友建議先看這篇 [Python] 關鍵字yield和return究竟有什麼不同? 。
yield from
是Python3.3後新增的語法,用法是將生成器的工作委任給另外一個生成器,簡單來說,就是借用
其他生成器返回的物件 當成 自己返回的物件。
另外在之前,yield
和
return
是不能同時出現在同一個函數中的,但在Python3.3之後有了新的用法,「yield from 表達式」會為被解析為「生成器函數中 return 回傳的回傳值」。
舉下面例子:
def example1():
for i in range(3):
yield i
return "end"
def example2():
print("start")
x = yield from example1()
print("example2: x =", x)
for i in example2():
print("i =", i)
結果:
start
i = 0
i = 1
i = 2
example2: x = end
example1最後回傳"end",被x接收到,所以印出x會是"end"。
希望這篇文章有幫助到你~
參考資料
如果喜歡這篇文章,請訂閱我並且拍五下手給予回饋(使用Google或Facebook帳號免費登入,只需要30秒),資金由LikeCoin提供,完全不會花到各位半毛錢!
因為您的支持,我才更有動力創作出更優質的文章~
留言
張貼留言