Bienvenidos de nuevo, quiero que entendamos cómo funcionan las cosas debajo del capó,
así que les mostraré dos ejemplos de cómo implementar el nuestro para Loop y luego implementar nuestra propia función de rango.
Así que el primero es nuestro bucle for.
Así que voy a decir un bucle for especial.
Debajo del capó, todo lo que está haciendo es recibir iterable, y luego vamos a decir Iterator.
Va a ser igual a un iterable ahora para que tengamos un iterable, tenemos lo que llamamos una función ED.
Eso acepta el iterable que acabamos de pasar.
Ahora, esta función interna nos permitirá usar la siguiente función en este iterable, así que quédate conmigo.
Voy a decir si bien es cierto.
Yo quiero.
Tratar.
Y en este tri bloque dirá Iterador.
Y podemos realizar, digamos, algún tipo de operación aquí si queremos, o podemos simplemente llamar al siguiente iterador.
Ya sabes, imprimamos algo aquí solo para que veamos cuál es el iterador.
Y finalmente, quiero que nos detengamos cuando tengamos la excepción de detención de iteración.
¿Recuerdas el que vimos donde no hay más elementos en el iterable?
Y aquí simplemente podemos romper.
Y asegúrate de eso.
Tengo el Colin configurado correctamente, así que ahora si hago especial para Loop y le doy una lista de uno, dos, tres y hago clic
en ejecutar.
Echale un vistazo.
Recorro algunos objetos iterables usando next.
Y ves que este objeto existe en el mismo espacio de memoria, aunque constantemente lo recorremos en bucle a
través de uno, dos, tres.
Así es como funcionan los bucles for debajo del capó cuando lo hacemos, digamos, ngom y luego le damos una
lista.
Pasará por todo, lo convertirá en algo admirable y seguirá funcionando y seguirá llamando al siguiente
iterador una y otra y otra vez hasta que terminemos el final de la línea y luego
salgamos del ciclo.
¿Y cómo comprobamos los valores reales del iterador?
Bueno, recuerde, la siguiente función generará el siguiente elemento.
Entonces, si imprimo aquí.
Y hago clic en ejecutar.
Consigo uno, dos, tres.
Así que puedo hacer dos veces si quisiera hacer clic en ejecutar.
Y ahí lo tienes, son especiales para Loop, solo multiplicamos nuestra lista por dos.
Eso es todo, eso es todo para bucles, realmente funciona, pero ¿qué pasa con los rangos?
¿Podemos crear nuestra propia función de rango?
Absolutamente podemos, y este es divertido.
Creemos una clase y esta clase, porque al final del día, solo vamos a crear un
objeto.
Eso tiene acciones que podemos hacer, así que diré mi gen por mi generador, y esto imitará lo que hace nuestro
rango.
Entonces voy a tener una clase y esta clase tendrá una función INET, tendrá un yo, un primero y un último.
Así es como un rango que podemos decir comienza con esto y termina con esto.
Y aquí, primero haremos el típico autodidacta.
Igual al primero.
Y luego autodidacta último es igual a último, y estoy usando una clase aquí porque, recuerde, solo
estamos creando nuestro propio tipo de datos, nuestro propio rango especial en Python.
Ahora tenemos nuestro generador simple, e idealmente queremos poder decir que Jen es igual y crear una instancia de mi
Jen para que tenga, digamos, de cero a 100, tal como lo haríamos con un rango.
E idealmente podemos decir por AI y Jen.
E imprimir.
Yo porque, quiero decir, así es como podemos usar rangos, ¿verdad?
Entonces, ¿cómo puedo hacer que esto funcione?
Bueno, podemos usar nuestros métodos Dundar, así que recuerda cómo tuvimos el it'a.
¿Obtener un iterador y usar el siguiente en ellos?
Bueno, tenemos un Dundar definido que es nuestro e It'a nos permite crear.
Una bola de aire, así que en nuestro caso, diré yo, y aquí solo voy a devolver la clase real así.
Y finalmente, queremos poder ejecutar la siguiente función en nuestro Djenne porque vimos hasta dónde funciona Loop,
necesitamos poder usar el it'ay luego el próximo Onda.
Entonces, una vez más, podemos usar un método Dundar, que se llama convenientemente.
Próximo.
Y esto está integrado en Python, así que si me escucho a sí mismo.
Y todo lo que queremos hacer aquí es hacerle saber cómo queremos trabajar a continuación, mientras yo diré si y necesitamos algún tipo de
estado o datos para realizar un seguimiento de dónde estamos.
Recuerde cómo funciona el generador.
Recuerda dónde están.
Bueno, podemos crear un objeto de clase HB, por lo que puedo decir que actual es igual a cero.
Entonces, aquí es donde estamos actualmente en nuestra iteración y decimos mi gen dot current, siempre que sea menos que el
último, que serán los cien aquí si ese es el caso.
Bueno, quiero que un número sea igual a mi actual gen dot, quiero aumentar mi gen dot actual en uno porque queremos decir, oye, nos
estamos moviendo hacia la siguiente ubicación y luego regresamos.
El número.
Porque así es como funciona Next debajo del capó, correcto, incrementamos nuestra ubicación actual en uno
y simplemente estamos devolviendo el número, que es bueno, en nuestro caso, será cero.
Y queremos seguir, seguir, seguir.
Bueno, hasta que la corriente ya no sea más grande que la anterior, en ese caso, simplemente vamos a generar
una iteración de parada porque no hay más cosas sobre las que iterar.
Vamos a ver si esto funciona.
Voy a ejecutar esto.
Y mira eso, todo está funcionando.
Pude recorrer mi generador e imprimir I desde cero hasta noventa y nueve.
Nuevamente, si volvemos a nuestro ejemplo aquí.
Y sé que esto es un poco difícil de ver al principio.
Pero todo lo que hice fue decir, quiero que una función de TI tenga la opción de primero y último.
Y voy a querer poder iterar a través de este objeto que voy a crear, y también
quiero poder usar el siguiente ciclo que, si recuerdas de nuestro ejemplo anterior, necesita.
Así que voy a decir para el elemento en Jen, solo recorrerlo, puedo
verlo porque ahora es un iterador y puedo usar el siguiente valor en él porque me permito hacer un bucle y
aumenta constantemente en uno.
Hasta que sigamos regresando, los números, sigamos devolviendo el número hasta que mi género actual se convierta
en cien y 100 no sea menos de 100 cien, que es el último homónimo.
Entonces va a generar una iteración de parada.
El bucle for nos atrapa automáticamente para que no se erosione y deje de girar.
Así es como funcionan las cosas debajo del capó con la estufa.
Ahora bien, no necesitas saber esto, no te van a pedir en tu día a día que implementes esto,
pero quería mostrarte que así es como funcionan las cosas.
Creo que eso es importante.