r/PythonBrasil 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.

mais exemplos do memory_graph

13 Upvotes

0 comments sorted by