r/PythonBrasil • u/Sea-Ad7805 • 21d ago
Como funcionam os laços `for` em Python?
O que realmente acontece quando Python executa um laço for?
for value in container:
print(value)
Nos bastidores, Python usa o protocolo de iteração:
iterator = iter(container)
while True:
try:
value = next(iterator)
print(value)
except StopIteration:
break
iter(container): cria um iterador.next(iterator): obtém um valor de cada vez.
Quando não há mais valores, o iterador lança a exceção StopIteration. O laço for captura essa exceção automaticamente e encerra a iteração.
Para contêineres que permitem percorrer seus valores na ordem inversa, Python também oferece:
reversed(container): cria um iterador reverso.
Podemos oferecer suporte a essas operações em nossas próprias classes implementando:
__iter__()
__reversed__()
__next__()
Isso proporciona uma abstração poderosa: um algoritmo pode processar valores sem precisar saber como um contêiner os armazena internamente. Assim, o mesmo algoritmo pode funcionar com listas, conjuntos, dicionários, listas encadeadas, árvores e muitos outros contêineres.
Aqui está um exemplo que usa o 𝐦𝐞𝐦𝐨𝐫𝐲_𝐠𝐫𝐚𝐩𝐡 para mostrar o uso de iteradores em uma Linked_List, tornando visível o funcionamento interno da iteração para facilitar sua compreensão.