Files
freeCodeCamp/guide/portuguese/python/generators/index.md
T

2.0 KiB
Raw Blame History

title, localeTitle
title localeTitle
Generators Geradores

Geradores

Geradores são um tipo especial de função que permite retornar valores sem finalizar uma função. Isso é feito usando a palavra-chave yield . Semelhante ao return , a expressão de yield retornará um valor para o chamador. A principal diferença entre os dois é que o yield suspenderá a função, permitindo que mais valores sejam retornados no futuro.

Os geradores são iteráveis ​​para que possam ser usados ​​de forma limpa com loops forícios ou qualquer outra coisa que seja iterada.

def my_generator(): 
    yield 'hello' 
    yield 'world' 
    yield '!' 
 
 for item in my_generator(): 
    print(item) 
 
 # output: 
 # hello 
 # world 
 # ! 

Como outros iteradores, os geradores podem ser passados ​​para a next função para recuperar o próximo item. Quando um gerador não tem mais valores para gerar, um erro StopIteration é gerado.

g = my_generator() 
 print(next(g)) 
 # 'hello' 
 print(next(g)) 
 # 'world' 
 print(next(g)) 
 # '!' 
 print(next(g)) 
 # Traceback (most recent call last): 
 #   File "<stdin>", line 1, in <module> 
 # StopIteration 

Os geradores são particularmente úteis quando você precisa criar um grande conjunto de valores, mas não precisa mantê-los todos na memória ao mesmo tempo. Por exemplo, se você precisar imprimir o primeiro milhão de números de fibonacci, você normalmente retornaria uma lista de um milhão de valores e iteraria na lista para imprimir cada valor. No entanto, com um gerador, você pode retornar um valor de cada vez:

def fib(n): 
    a = 1 
    b = 1 
    for i in range(n): 
        yield a 
        a, b = b, a + b 
 
 for x in fib(1000000): 
    print(x) 

Mais Informações