[英]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
將信息傳遞給生成器。
顯然兩種方式都表現相同(在表面)。
哪種方法更可取,為什么?
哪種方法可以減少開銷,或者具有其他我未能發現的優勢?
生成器理解(例如在g()
)會稍快一些。
如果您的邏輯比您提供的簡單示例更復雜,那么顯式循環(例如在f()
)可能更具可讀性。
除此之外,我想不出任何重大差異。
但請記住他們說的話:
過早優化是萬惡之源!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.