Python'da *args va **kwargs
Odatda funksiya aniq sonda argument oladi.
Lekin ba’zan necha ta argument kelishini oldindan bilmaysiz — masalan
istalgancha sonni qo’shadigan funksiya. Buning uchun *args va
**kwargs bor.
*args — nomsiz argumentlar to’plami
*args funksiyaga istalgancha nomsiz argument uzatishga imkon beradi.
Ular ichkarida kortej sifatida yig’iladi:
Python
yigindi ni istalgancha son bilan chaqirish mumkin — hammasi args ichiga
tushadi.
**kwargs — nomli argumentlar lug’ati
**kwargs esa nomli argumentlarni lug’at sifatida
yig’adi:
Python
Amaliy mashq
Moslashuvchan funksiyalar yozing:
*argsbilan istalgancha sonning o’rtachasini hisoblovchi funksiya yozing;- uni 2 ta, so’ng 5 ta son bilan chaqiring;
**kwargsbilan talaba ma’lumotini qabul qiluvchi funksiya yozing;argsning turinitype()bilan tekshiring — kortejmi yoki ro’yxat?- ikkalasini bitta funksiyada birga ishlatib ko’ring.
Nomli argumentni nomsizdan oldin yozsangiz nima bo’ladi — tartib muhimmi?
Qisqacha xulosa
*args— funksiyaga istalgancha nomsiz argument uzatadi (kortej).**kwargs— istalgancha nomli argument uzatadi (lug’at).- Nomlari shart emas —
*va**belgilari muhim. - Necha argument kelishi oldindan noma’lum bo’lganda ishlatiladi.
- Dekoratorlarda argumentlarni o’tkazish uchun keng qo’llanadi.
Keyingi darsda closure — funksiya ichidagi funksiya va uning “eslab qolishi”ni ko’ramiz.