Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Funções Geradoras | Especificação do Valor de Retorno da Função
Tutorial de Funções em Python
Seção 4. Capítulo 4
single

single

Funções Geradoras

Deslize para mostrar o menu

Note
Definição

Uma função geradora é um tipo especial de função que utiliza a palavra-chave yield em vez de return para gerar uma sequência de valores. Quando uma função geradora é chamada, ela retorna um objeto iterador, que pode ser percorrido para recuperar os valores um de cada vez.

A principal vantagem das funções geradoras é a eficiência de memória. Em vez de gerar toda a sequência antecipadamente e armazená-la na memória, os geradores produzem valores sob demanda conforme necessário.

Como o yield funciona

Diferente do return, que encerra completamente a função, o yield pausa a função e salva seu estado. Na próxima chamada de next(), o gerador retoma exatamente de onde parou:

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

Também é possível iterar sobre um gerador usando um loop for – ele chama automaticamente next() até que o gerador seja esgotado:

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
Nota

Quando um gerador é esgotado (não há mais valores para gerar), chamar next() nele irá gerar um erro StopIteration. Um loop for lida com isso automaticamente.

Tarefa

Deslize para começar a programar

Implemente uma função geradora even_numbers que produza números pares em um determinado intervalo.

  1. Definição de uma função geradora even_numbers com dois parâmetros: start e stop.
  2. Utilização de um laço while para iterar enquanto start for menor ou igual a stop.
  3. Utilização de yield para retornar start apenas se for par (divisível por 2).
  4. Incremento de start em 1 após cada iteração.
  5. Utilização de um laço for para exibir todos os valores gerados.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt