擅长:python、mysql、java
<p>信贷:这是由@L3viathan答案启发的</p>
<p>在这个版本中,<a href="https://docs.python.org/3/library/itertools.html#itertools.tee" rel="nofollow noreferrer">itertools.tee</a>用于存储包装器在原始生成器后面生成的值。你知道吗</p>
<pre><code>import itertools
def eagergenerator(mygen):
class GeneratorWrapper:
def __init__(self, *args, **kwargs):
self.g0, self.g1 = itertools.tee(mygen(*args, **kwargs))
self._next0()
def _next0(self):
try:
next(self.g0)
except StopIteration:
pass
def __iter__(self):
return self
def __next__(self):
self._next0()
return next(self.g1)
return GeneratorWrapper
</code></pre>