Внутри класса контейнера, когда я хочу перебирать его элементы (или преобразования его элементов или подмножества его элементов), я могу либо написать генератор (например, 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
.
Очевидно, что оба пути ведут себя одинаково (на поверхности).
-
Какой подход предпочтительнее и почему?
-
Какой подход создает меньше накладные расходы или другие преимущества, которые я не вижу?