簡體   English   中英

寫一個發電機或返回發電機?

[英]Write a generator or return a generator?

在容器類中,當我想迭代其項目(或其項目的變換或其項目的子集)時,我可以編寫生成器(如f )或返回生成器(如g ):

class SomeContainer:
    def __init__(self):
        self.data = [1, 'two', 3, 'four']

    def f(self):
        for e in self.data: yield e + e

    def g(self):
        return (e + e for e in self.data)

sc = SomeContainer()
for x in sc.f(): print(x)
for x in sc.g(): print(x)

我不需要通過send將信息傳遞給生成器。

顯然兩種方式都表現相同(在表面)。

  1. 哪種方法更可取,為什么?

  2. 哪種方法可以減少開銷,或者具有其他我未能發現的優勢?

生成器理解(例如在g() )會稍快一些。

如果您的邏輯比您提供的簡單示例更復雜,那么顯式循環(例如在f() )可能更具可讀性。

除此之外,我想不出任何重大差異。

但請記住他們說的話:

過早優化是萬惡之源!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM