Python3 da funksiyalar

Python3 da funksiyalar


Copyright by AlgoExpert
Python 3 da funksiyalar asosan ikki xil ko'rinishda bo'lishi mumkin. Birinchi ko'rinish bu signatura va nomga ega bo'lgan funksiyalar. Ikkinchi ko'rinish esa anonim funksiyalar yoki lambda deyiladi.

Oddiy signatura va nomga ega funksiyalar pythonda qo'yidagi ko'rinishda ifodalanadi.

Funksiya e'lon qilinishi.

Funksiya e'lon qilishda def kalid so'zi majburiy hisoblanadi. Bunda python3 interpretatori e'lon qilinayotgan obekt funksiya ekanligini tushunib oladi. Funksiya beriladigan nom esa keyinchalik uni chaqirish uchun ishlatiladi.

Funksiya argumentlari bu funksiya o'z ishini bajarilishi uchun bilishi kerak bo'lgan qiymatlar hisoblanadi. Masalan agar siz Bosmaxonada ishlasiz sizning ismingiz bu funksiya nomi endi siz biror narsani chop etishiz uchun esa sizga keladigan Mijoz tomonidan ma'lumot (yane aynan nimani chop etish) va albatta qogoz kerak bo'ladi. Bular esa o'z navbatida funksiyaning argumentlari hisoblanadi. Qaytarilishi kerak bo'lgan ma'lumot masalan bosmaxonada ishlaydigan shaxs sifatida ko'rilsa bu bosmaga berilgan va o'zida ma'lumotni saqlagan qogoz hisoblanadi.

Oddiyroq namuna sifatida uchta butun sonning yigindisini qaytaradigan funksiyani ko'ramiz.

Uchta butun sonning yigindisini topadigan dastur

Ko'rib turganingizdek 3 ta butun sonning yigindisi ham butun son bo'lgani uchun funksiya int toifada qiymat qaytarmoqda. Funksiya o'z bajargan ishini qaytarishi uchun return kalid so'zidan foydalanish kerak.

Bazi funksiyalar hech qanday qiymat qaytarmasligi mumkin. Bu holatda return kalid so'zidan foydalanish shart emas. Masalan ma'lumotlari (Ism, Yosh, Davlat) bo'lgan kortejlardan (tuple) tashkil topgan ro'yxatni argument sifatida qabul qilib ularni chiroyli ravishda ekranga chop etadigan printUser nomli funksiya tuzamiz

print_user funksiyasi - Rasm 1.2


Endi yuqoridagi funksiyamizni asosiy dasturimizda chaqiramiz. Buning uchun albatta (Ism,Yosh,Davlat) kabi elementlardan tashkil topgan ruyxat tuzishimiz kerak.

funksiyani asosiy dasturimizda chaqiramiz. (__main__ bu bizing dasturimiz)

Bu funksiya hech qanday natija qaytargani yo'q. Lekin Pythonda funksiya har doim natija qaytaradi. Agar return kalid so'zi ishlatilmasa funksiya natijasi None (Yane bo'sh hisoblanadi). Dastur natijasi qo'yidagi rasmda keltirilgan.

Yuqoridagi dastur natijasi

Bundan tashqari funksiyalarning argumentlari ham ikki xil ko'rinishda bo'ladi.

  1. Pozitsiyalashgan argumentlar
  2. Nomlangan argumentlar

Pozitsiyalashgan argumentlar o'z o'rniga ega bo'lib ular funksiya chaqirilganda kiritilishi shart. Yuqorida ko'rilgan ikkala funksiya ham pozitsiyalashgan argumentlardan tashkil topgan. Bunda funksiya biror parametri uzatilmasa dasturimiz istisni oladi.

Ikkinchi ko'rinishdagi argumentlar bu Named argument yoki Nomlangan argumentlar deyiladi. Buni biz namuna bilan ko'rishga harakat qilamiz.

Namuna sifatida ikkita haqiqiy sonni va bitta belgini qabul qilib belgiga mos ravishda amalni bajaradigan calc funksiyasini tuzamiz.

Rasm 1.3-Nomlangan argument
Ko'rib turganingizdek nomlangan argument har doim pozitsiyalashgan argumentdan keyin yoziladi. Albatta uning boshlangich qiymati bo'lishi kerak. Ayni holatda "+" belgisi.


Endi funksiyani chaqirish usullarini ko'ramiz.(Rasm 1.4)

Rasm 1.4-Nomlangan argumentga ega funksiyalarni chaqirish usullari

Bundan tashqari Python 3 da pozitsiyalashgan va nomlangan argumentlarni yoyib (*, yoki **) ko'rinishda uzatish mumkin.

  1. * operatori bu yoyish operatori hisoblanadi. Masalan tp = (1,2,3,4) tuple berilgan uni yoyish uchun *tp desak kifoya. Bunda natija 1,2,3,4 yane vergullar bilan ajraladi. Bu degani funksiya parametri sifatida bir nechta vergul bilan ajralgan argumentlar kiradi.
  2. ** operatori bu dict lugatni yoyish uchun ishlatiladi. Masalan agar dc = {'a':4,'b':5} lugat bulsa **dc deyilsa qavslar olib tashlanadi va natija a=4, b=5 ko'rinishga keladi. Bu esa o'z navbatida funksiya argumentiga bir nechta nomlangan argument kiritilgandek bo'ladi.

Har biriga namunalar ko'ramiz.

Bir nechta butun sonlarni qabul qilib ularni ko'paytmasini qaytaradigan mul_star funksiyasi tuzilsin.

Rasm 1.5-Yoyilgan holatda ma'lumotni uzatish

Natijasini esa qo'yidagi Rasm 1.6 da ko'rishiz mumkin.

Yuqoridagi dastur natijasi
*args bu yoyilgan tuple(Kortej) shuning uchun ham u pozitsiyalashgan argument hisoblanadi.

Qo'yida lugatlarni yoyib berilishi haqidagi dastur parchasi keltirilgan.

**args ni qo'llanilishi
**args bu yoyilgan lugat (dict) Esingizdan chiqmasin **args (**kwargs-key word arguments) bu nomlangan argument hisoblanadi!!!

O'zingizni sinab ko'ring.

  • Uchta haqiqiy sonning yigindisini qaytaruvchi sum_three(a:float, b:float, c:float)->float funksiyasini tuzing
  • Elementlari (surname, birth_year) bo'lgan ruyxatni qabul qilib yoshi eng kichigini topuvchi min_age(ls:list)->int funksiyasini tuzing.
  • Ikkita pozitsiyalashgan a va b sonlarni qabul qilib ularni o'rtasida nomlangan fil_char argument -belgini joylashtirib satr ko'rinishda qaytaradigan fil_between(a:int, b:int, fil_char='+')->str funksiyasini tuzing.
  • Bir nechta argumentlar qabul qilib ularni yigindisini qaytaradigan sumator(*args)->float funksiyasini tuzing.
  • Bir nechta nomlangan argumentlar qabul qilib ularning nomlari ichidan eng uzunini qaytaruvchi max_len_name(**kwargs)->str funksiyasni tuzing.





Report Page