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:
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 laço 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 laço
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