繁体   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