Python'da iterator protokoli

for sikli ro’yxat, string va boshqa ketma-ketliklarni birma-bir aylanadi. Lekin u buni qanday qiladi? Ortida iterator turadi. Bu darsda iterator mexanizmini ochamiz.

iter va next

Har aylansa bo’ladigan narsadan iter() bilan iterator olinadi, keyin next() bilan elementlar birma-bir so’raladi:

Python

next() har chaqirilganda keyingi elementni beradi. Elementlar tugagach, StopIteration xatosi chiqadi — bu “tugadi” signali.

for sikli aslida nima qiladi

for sikli aynan shu jarayonni avtomatlashtiradi. Bu ikki kod bir xil ishlaydi:

Python

Ichkarida for iter() chaqiradi, next() bilan aylanadi va StopIteration kelganda to’xtaydi — buni siz ko’rmaysiz.

O’z iteratoringiz

Klassga __iter__ va __next__ qo’shib, uni aylansa bo’ladigan qilish mumkin:

Python

Amaliy mashq

Iteratsiyani ichidan ko’ring:

  1. Ro’yxat yaratib, iter() bilan iterator oling;
  2. next() ni bir necha marta chaqiring;
  3. elementlar tugagach yana next() chaqiring — qanday xato chiqadi?
  4. for sikli bilan xuddi shu ro’yxatni aylanib chiqing;
  5. __iter__ va __next__ metodlari bo’lgan o’z klassingizni yozing.

for sikli 3-qadamdagi xatoni qanday hal qiladi?

Qisqacha xulosa

  • Iterator — elementlarni birma-bir beradigan obyekt.
  • iter() iteratorni oladi, next() keyingi elementni beradi.
  • Elementlar tugaganda StopIteration chiqadi.
  • for sikli aslida iter() + next() ni avtomatlashtiradi.
  • Iterator protokoli — __iter__ va __next__ metodlari; generator uni soddalashtiradi.

Keyingi darslarda kontekst menejer, tip izohlari va asinxron dasturlashni ko’ramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi