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:
1234567891011def 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():
12345678910def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
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.
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.
- Inicializar a variável
countcom o valor 1, pois os identificadores começam em 1. - Utilizar um loop
whileinfinito para gerar identificadores continuamente. - Utilizar
yieldpara retornar o identificador atual no formatof"ID_{count}". - Incrementar
countem 1 após cada iteração. - Inicializar o objeto gerador
id_genchamandoid_generator().
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo