Bem-vindo de volta, quero que entendamos como as coisas funcionam por baixo do capô, então
vou mostrar a vocês dois exemplos de implementação de nosso próprio Loop para e, em seguida, implementação de nossa própria função de intervalo.
Portanto, o primeiro é o nosso loop for.
Então, vou dizer especial para loop.
Por baixo do capô, tudo o que ele faz é receber iterável e, em seguida, vamos dizer Iterator.
Vai ser igual a um iterável agora para termos um iterável, temos o que chamamos de função ED.
Isso aceita o iterável que acabamos de aprovar.
Agora, essa função interna vai nos permitir usar a próxima função neste iterável, então fique comigo.
Eu vou dizer embora seja verdade.
Eu quero.
Experimente.
E neste tri bloco dirá Iterator.
E podemos realizar, digamos, algum tipo de operação aqui, se quisermos, ou podemos apenas chamar o próximo iterador.
Você sabe, vamos imprimir algo aqui apenas para ver o que é o iterador.
E, finalmente, quero que paremos quando tivermos a exceção de iteração de parada.
Lembra daquele que vimos onde não há mais itens no iterável?
E aqui nós simplesmente podemos simplesmente quebrar.
E tenha certeza disso.
Eu tenho o Colin configurado corretamente, então agora se eu fizer especial para Loop e der uma lista de um, dois, três e clicar
em executar.
Confira.
Eu faço um loop por alguns objetos iteráveis usando next.
E você vê que este objeto existe no mesmo espaço de memória, embora estejamos constantemente passando por ele através
de um, dois, três.
Portanto, é assim que os loops for funcionam por baixo do capô quando fazemos para, digamos, ngom e, em seguida, fornecemos uma
lista.
Isso vai passar por tudo, vai torná-lo admirável e vai continuar funcionando e
chamando o próximo iterador continuamente até terminarmos o fim da linha e depois sairmos
do loop.
E como verificamos os valores reais do iterador?
Bem, lembre-se, a próxima função produzirá o que quer que seja o próximo item.
Então, se eu imprimir aqui.
E eu clico em correr.
Eu ganho um, dois, três.
Então, eu posso apenas fazer duas vezes se eu quiser clicar em executar.
E aí está, são especiais para Loop, basta multiplicar nossa lista por dois.
É isso, isso é tudo para loops, realmente funciona, mas e os intervalos?
Podemos criar nossa própria função de alcance?
Nós absolutamente podemos, e este é divertido.
Vamos criar uma classe e essa classe, porque no final do dia, vamos apenas criar um
objeto.
Isso tem ações que podemos fazer, então direi meu gen para o meu gerador, e isso vai imitar o que nosso range
faz.
Vou ter uma aula e essa aula vai ter uma função INET, vai ter um self, um primeiro e um último.
Então, é assim que um intervalo que podemos dizer começa com isso e termina com isso.
E aqui, faremos o autodidata típico primeiro.
É igual ao primeiro.
E então autodidata, último é igual a último, e estou usando uma classe aqui porque, lembre-se, estamos
apenas criando nosso próprio tipo de dados, nosso próprio intervalo especial em Python.
Agora temos nosso gerador simples e, idealmente, queremos ser capazes de dizer que Jen é igual e instanciar
meu Jen para ter, digamos, zero a 100, assim como faríamos com um intervalo.
E, idealmente, podemos dizer para AI e Jen.
E imprimir.
Eu porque, quer dizer, é assim que conseguimos usar os intervalos, certo?
Então, como posso fazer isso funcionar?
Bem, podemos usar nossos métodos Dundar, então lembre-se de como tínhamos o it'a.
Obter um iterador e usar o next neles?
Bem, nós temos um Dundar definido que é nosso e It'a nos permite criar.
Uma bola aérea, então, em nosso caso, direi self, e aqui vou apenas retornar a aula real assim.
E então, finalmente, queremos ser capazes de executar a próxima função em nosso Djenne porque vimos o quão longe do trabalho do Loop,
precisamos ser capazes de usar a it'a e então a próxima Onda.
Então, mais uma vez, podemos usar um método Dundar, que é convenientemente chamado.
Próximo.
E isso é embutido em Python, então se eu me ouvir.
E tudo o que queremos fazer aqui é que ela saiba como queremos trabalhar, enquanto direi se e precisamos de algum tipo de
estado ou dados para manter o controle de onde estamos.
Lembre-se de como o gerador funciona.
Lembre-se de onde eles estão.
Bem, podemos criar um objeto de classe HB, então posso dizer que corrente é igual a zero.
Portanto, é aqui que estamos atualmente em nossa iteração e digamos meu ponto de geração atual, contanto que seja menos do que
o self dure, que será a centena aqui se for o caso.
Bem, eu quero um número igual a minha corrente de ponto gen, quero aumentar minha corrente de ponto gen em um porque queremos dizer, ei, estamos
nos movendo para o próximo local e depois voltamos.
O número.
Porque é assim que funciona por baixo do capô, certo, incrementamos nossa localização atual em um
e estamos simplesmente retornando o número, que está bem, no nosso caso, será zero.
E queremos continuar, continuar, continuar.
Bem, até que a corrente não seja maior do que a última, nesse caso, vamos simplesmente gerar
uma iteração de parada porque não há mais coisas para iterar.
Vamos ver se isso funciona.
Eu vou executar isso.
E veja só, está tudo funcionando.
Consegui fazer um loop através do meu gerador e imprimir de zero a noventa e nove.
Novamente, se voltarmos ao nosso exemplo aqui.
E eu sei que é um pouco difícil de encarar no início.
Mas tudo o que fiz foi dizer, quero que uma função de TI tenha a opção de ser o primeiro e o último.
E vou querer ser capaz de iterar por meio desse objeto que vou criar, e também quero ser
capaz de usar o próximo loop for, se você se lembra do nosso exemplo anterior, precisa.
Vou dizer para o item em Jen, apenas faça um loop nele, sou capaz
de olhar porque agora é um iterador e posso usar o próximo valor nele porque permito que façamos um loop e
aumentar constantemente em um.
Até que continuemos retornando, os números, continuemos retornando o número até que meu gênero atual se
torne cento e 100 não seja menos que 100 cem, que é o último autointitulado.
Portanto, isso gerará uma iteração de parada.
O loop for nos pega automaticamente para que não sofra erosão e pare de executar o loop.
É assim que as coisas funcionam por baixo do capô com alcance.
Agora, você não precisa saber disso, não vai ser solicitado que você implemente isso no seu dia a dia, mas
eu queria mostrar que é assim que as coisas funcionam.
Eu acho isso importante.