Reja: Moslashuvchan funksiya? *args usuli kwargs usuli moslashuvchan funksiya


Download 6.11 Kb.
Sana05.04.2023
Hajmi6.11 Kb.
#1276856
Bog'liq
1-vazifa Sanjar


Mavzu:
Moslashuvchan Funksiya(*args, **kwargs)
Tayyorladi: Saydaliyev Sanjar
Reja:
1. Moslashuvchan funksiya?
2. *args USULI
3. **kwargs USULI
MOSLASHUVCHAN FUNKSIYA
Agar funksiyangiz bir nechta argument qabul qilishi kerak bo'lsa-yu, lekin siz argumentlar sonini aniq bilmasangiz, Pythonda istalgancha qiymat qabul qiluvchi funksiya yaratish imkoniyati bor.
*args
*args Pythonda bir funksiya nomidan keyin keladigan bir argumentdir. Bu argument, funksiyaga olib kelinishi mumkin bo'lgan barcha argumentlarni yig'ish uchun ishlatiladi. *args o'zgaruvchisi tuple yoki ro'yxatga o'girilgan elementlarni qabul qiladi.
Quyidagicha misol berish mumkin:
def sum_numbers(*args):
total = 0
for number in args:
total += number
return total
Bu funksiya *args argumentini qabul qiladi va barcha argumentlarni yig'indisini hisoblaydi. Misol uchun, sum_numbers(1, 2, 3, 4, 5) ifodasi funksiya tomonidan qabul qilinadi va 15 natijasi qaytariladi. Bu usul yordamida funksiyalar istalgan soni argument qabul qilishiga imkon beradi.
*args usulida, bacha uzatilgan parametrlar (bir dona bo'lsa ham) funksiya ichida o'zgarmas ro'yxatga (tuple) joylanadi. Bundan kelib chiqib, yuqoridagi funksiyamizni yanada soddalashtirib yozishimiz mumkin:
def sum_numbers(*args):
return sum(args)
print(sum_numbers(4,5,6,7))
Natija: 22
Agar funksiya bir nechta argument qabul qilsa, *args argument doim oxirida yoziladi:
def sum_numbers(x,y,*sonlar):
return x+y+sum(sonlar)
Yuqoridagi funksiyamiz kamida 2 ta parametr qabul qiladi (x va y) va birinchi ikki argumentlar majburiy argumentlardir.
print(sum_numbers(2))
Natija: TypeError: summa() missing 1 required positional argument: 'y'
**kwargs
**kwargs Pythonda bir funksiya nomidan keyin keladigan bir argumentdir. Bu argument, funksiyaga olib kelinishi mumkin bo'lgan barcha nomli argumentlar (kalitlar) va ularning qiymatlari to'plamini yig'ish uchun ishlatiladi. **kwargs o'zgaruvchisi lug'at (dictionary) ko'rinishida nom va qiymatlarni qabul qiladi.
**kwargs — keyword arguments (kalit so'zli argumentlar)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
Bu funksiya **kwargs argumentini qabul qiladi va lug'at ko'rinishidagi argumentlarni (kalit va qiymatlar) chiqaradi. Misol uchun, print_info(name="John", age=30, city="New York") ifodasi funksiya tomonidan qabul qilinadi va quyidagi chiqaruv natijasi hosil qilinadi:
**kwargs yordamida, funksiyalarga lug'at (dictionary) ko'rinishidagi argumentlarni o'tkazish mumkin bo'lgani uchun, funksiya nomidan keyingi argumentlar sonini aniqlashga majburiyati yo'q. Misol uchun, print_info() funksiyani chaqirish uchun, hech qanday argument ko'rsatish zarur emas. Lekin, print_info(name="John") yoki print_info(city="New York", age=30) funksiyalarni chaqirish mumkin. Shunday qilib, **kwargs argumenti funksiyalarga istalgan soni nomli argument qabul qilishga imkon beradi va lug'at (dictionary) ko'rinishidagi ma'lumotlarni olib ishlay oladi.
name: John
age: 30
city: New York

**kwargs Pythonning jadvallashgan funksiyalarida, funksiya nomidan keyin keladigan nomli argumentlarni (kalitlar va qiymatlar to'plami) ko'rsatish uchun ishlatiladi. Bu argument nomi, lug'at (dictionary) ko'rinishidagi kalitlarni o'z ichiga oladi. **kwargs va *args o'zgaruvchilari birlikda ishlatilishi mumkin. *args argumenti, bitta ro'yxatni qabul qiladi, **kwargs argumenti esa lug'at (dictionary) ko'rinishidagi kalit va qiymatlarni qabul qiladi. Misol uchun:

Bu funksiya ro'yxat ko'rinishidagi barcha argumentlarni qabul qiladi va ularni chop etadi. Misol uchun, my_func(1, 2, 3, name="john", age=30) ifodasi funksiyani chaqirish uchun ishlatiladi. Ushbu ifoda funksiyaga bitta ro'yxat (1, 2, 3) va lug'at ko'rinishidagi argumentlarni olib keladi ({'name': 'john', 'age': 30}), va quyidagi chiqaruv natijasi hosil qilinadi:


**kwargs yordamida, funksiya nomidan keyin ko'rsatiladigan argumentlarni lug'at ko'rinishida qabul qilish mumkin bo'lgani uchun, funksiya nomidan keyin keladigan argumentlar sonini bilishga majburiyati yo'q. Shunday qilib, **kwargs argumenti funksiyalarga qulaylik keltiradi va odatda keng ko'lamli funksiyalarda ishlatiladi.
Download 6.11 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling