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

single

Geradores Infinitos

Deslize para mostrar o menu

Lembre-se de que yield pausa um gerador e o retoma na próxima chamada de next(). Até agora, os geradores que você viu tinham um ponto de parada claro. Mas os geradores se tornam especialmente poderosos quando combinados com um laço infinito – produzindo valores indefinidamente sem nunca armazená-los na memória.

Geradores infinitos com while True

Usar um laço while True dentro de um gerador cria uma sequência infinita – algo que seria impossível de armazenar como uma lista. O gerador só produz o próximo valor quando next() é chamado:

1234567891011
def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3

Não importa quantas vezes você chame next(), o gerador sempre terá um novo valor pronto – ele nunca se adianta nem armazena valores na memória.

Controle de um Gerador Infinito

Como o gerador executa indefinidamente, é necessário controlar quantos valores você deseja obter. A maneira mais comum é utilizando um loop for com range():

12345678910
def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Note
Nota

Nunca itere sobre um gerador infinito com um loop for simples sem uma condição de parada – isso fará com que ele execute para sempre e trave seu programa.

Tarefa

Deslize para começar a programar

Gerar IDs de usuário únicos utilizando uma função geradora infinita. A função id_generator() deve produzir continuamente identificadores como "ID_1", "ID_2", etc.

  1. Inicializar a variável count com o valor 1, pois os identificadores começam em 1.
  2. Utilizar um loop while infinito para gerar identificadores continuamente.
  3. Utilizar yield para retornar o identificador atual no formato f"ID_{count}".
  4. Incrementar count em 1 após cada iteração.
  5. Inicializar o objeto gerador id_gen chamando id_generator().

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 5
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