Python'da closure va yopiq funksiyalar

Python’da funksiya ichida boshqa funksiya yozish va uni qaytarish mumkin. Bunda ichki funksiya tashqi funksiyaning o’zgaruvchisini “eslab qoladi” — bu closure deyiladi. Bu darsda shu tushunchani ko’ramiz.

Funksiya ichidagi funksiya

Avval eng oddiy holat — funksiya ichida funksiya:

Python

Ichki funksiya faqat tashqi funksiya ichida yashaydi va o’sha yerda chaqiriladi.

Closure — tashqi o’zgaruvchini eslab qolish

Endi qiziq qismi: ichki funksiya tashqi funksiyaning o’zgaruvchisidan foydalanadi va tashqi funksiya uni qaytaradi:

Python

kopaytiruvchi(2) tugagach ham, ikki_barobar n=2 ni eslab qoldi. Mana closure: ichki funksiya o’zi tug’ilgan muhitning o’zgaruvchisini o’zi bilan olib ketadi.

Amaliy mashq

Closure yarating:

  1. kopaytiruvchi(n) funksiyasini yozing — u ichida funksiya qaytarsin;
  2. ichki funksiya kelgan sonni n ga ko’paytirsin;
  3. ikki_barobar = kopaytiruvchi(2) va uch_barobar = kopaytiruvchi(3) yarating;
  4. ikkalasini turli sonlar bilan chaqiring;
  5. natijalarni solishtiring — har biri o’z n ini eslab qoldimi?

kopaytiruvchi tugagandan keyin ham n qayerda saqlanib qolgan?

Qisqacha xulosa

  • Python’da funksiya ichida funksiya yozish mumkin.
  • Closure — tashqi funksiyaning o’zgaruvchisini eslab qolgan ichki funksiya.
  • Tashqi funksiya tugagach ham, ichki funksiya o’sha qiymatni saqlaydi.
  • Bir funksiyadan turli sozlangan funksiyalar yasash imkonini beradi.
  • Closure — dekoratorlarning asosidagi tushuncha.

Keyingi darsda iterator — ketma-ketlikni birma-bir aylanish mexanizmini ko’ramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi