yield in python
-
Back-End
from pprint import pprint
#normal way ********************
def ler_csv(nome_arquivo):
with open(nome_arquivo, "r") as arquivo:
return arquivo.readlines()
vendas = ler_csv("vendas.csv")
pprint(vendas)
#explicit way ********************
def ler_csv(nome_arquivo):
linhas = []
for linha in open(nome_arquivo, "r"):
linhas.append(linha)
return linhas
vendas = ler_csv("vendas.csv")
pprint(vendas)
#generator way *******************
#não crio lista, então nao armazeno na memória
def ler_csv(nome_arquivo):
for linha in open(nome_arquivo, "r"):
yield linha
vendas = ler_csv("vendas.csv")
for venda in vendas:
pprint(venda)
#easier way ***********************
def ler_csv(nome_arquivo):
yield from open(nome_arquivo, "r")
vendas = ler_csv("vendas.csv")
for venda in vendas:
pprint(venda)