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:
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:
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:
kopaytiruvchi(n)funksiyasini yozing — u ichida funksiya qaytarsin;- ichki funksiya kelgan sonni
nga ko’paytirsin; ikki_barobar = kopaytiruvchi(2)vauch_barobar = kopaytiruvchi(3)yarating;- ikkalasini turli sonlar bilan chaqiring;
- natijalarni solishtiring — har biri o’z
nini 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.