跳到主要內容

[Python] yield from用法

之前我寫過一篇文章專門在講yield,對yield不了解的朋友建議先看這篇 [Python] 關鍵字yield和return究竟有什麼不同?

yield from 是Python3.3後新增的語法,用法是將生成器的工作委任給另外一個生成器,簡單來說,就是借用 其他生成器返回的物件 當成 自己返回的物件

另外在之前,yieldreturn 是不能同時出現在同一個函數中的,但在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"。

希望這篇文章有幫助到你~

參考資料

Python3: 淺談 Python 3.3 的 Yield From 表達式


如果喜歡這篇文章,請訂閱我並且拍五下手給予回饋(使用Google或Facebook帳號免費登入,只需要30秒),資金由LikeCoin提供,完全不會花到各位半毛錢!

因為您的支持,我才更有動力創作出更優質的文章~

留言