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 apresentados tinham um ponto de parada definido. No entanto, os geradores tornam-se especialmente poderosos quando combinados com um laço infinito – produzindo valores indefinidamente sem nunca armazená-los na memória.

Geradores Infinitos com while True

O uso de um laço while True dentro de um gerador cria uma sequência infinita – algo 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 laço 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 laço 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