Skip to main content

5-dars. Funksiya, rekursiya va lambda funksiya. Modul

Ma'ruza: (Python dasturlash tilida)

Dars maqsadlari:

  • Funksiya
    • Funksiya tushunchasini va uning tuzilishini o'rganish.
    • Qiymat qaytaradigan va qiymat qaytarmaydigan funksiyalarni farqlash.
    • Misollar yordamida funksiyalarni amaliyotda qo'llash.
  • Rekursiya va Lambda Funksiya
    • Rekursiya va iteratsiya tushunchalarini o'rganish.
    • Lambda funksiyasining qanday ishlashini tushunish.
    • filter va map funksiyalarini amaliyotda qo'llash.

Funksiya

Funksiya tushunchasi

Funksiya — bu bir nechta buyruqlarni bir joyda to'plab, ma'lum bir vazifani bajarish uchun yaratilgan dasturiy modul. Funksiyalar o'z ichida kodni takrorlashni oldini oladi va bir necha marta chaqirilishi mumkin.

Funksiyaning tuzilishi

Funksiya quyidagi tuzilishga ega:

def funksiya_nomi(parametr1, parametr2):
# Kodlar
return natija
  • def - funksiya e'lon qilish kalit so'zi.
  • funksiya_nomi - siz yaratgan funksiya nomi. Bu nom orqali funksiyani chaqirasiz.
  • parametr1, parametr2 - funksiyaga beriladigan kirish qiymatlari (parametrlar). Ular ixtiyoriy bo'lishi mumkin.
  • return - funksiya ishlashini tugatgach, qiymatni qaytaradi. Agar return bo'lmasa, funksiya hech qanday qiymat qaytarmaydi.

Qiymat qaytaradigan funksiyalar

Funksiya natijani return orqali qaytarganda, bu funksiya qiymat qaytaradigan funksiya hisoblanadi. Keling, misol keltiraylik:

def qo'shish(a, b):
natija = a + b
return natija

Bu funksiya ikkita sonni qabul qiladi va ularni qo'shadi. Endi, bu funksiyani chaqirib, natijani olamiz:

summa = qo'shish(5, 3)
print(summa) # Natija: 8

Qiymat qaytarmaydigan funksiyalar

Funksiya hech qanday qiymat qaytarmasa, bu qiymat qaytarmaydigan funksiya deb ataladi. Keling, misol ko'raylik:

def salom_ber(ism):
print(f"Salom, {ism}!")

Bu funksiya foydalanuvchiga salom beradi:

salom_ber("Ali")  # Natija: Salom, Ali!

Misollar

Keling, bir nechta misollarni ko'rib chiqamiz. Faraz qilaylik, sizda ikki sonni taqqoslash uchun funksiya bo'lishi kerak:

def taqqosla(a, b):
if a > b:
return f"{a} katta {b} dan."
elif a < b:
return f"{a} kichik {b} dan."
else:
return f"{a} va {b} teng."

Bu funksiya berilgan ikki sonni taqqoslaydi va qaysi biri katta yoki kichikligini bildiradi.

Rekursiya va Lambda Funksiya

Rekursiya

Rekursiya tushunchasi

Rekursiya — bu funksiyaning o'zini o'zi chaqirishi jarayoni. Rekursiv funksiya ma'lum bir shartga erishgach to'xtaydi. Rekursiya juda qulay, lekin uni noto'g'ri ishlatish dastur xatolariga olib kelishi mumkin.

Iterativ va Rekursiv Funktsiyalar

Iterativ funktsiya - bu sikl (loop) yordamida takrorlanadigan funktsiya hisoblanadi. Keling, oddiy faktorial misolini ko'rib chiqaylik:

Iterativ Misol:

def faktorial_iterativ(n):
natija = 1
for i in range(1, n + 1):
natija *= i
return natija

Rekursiv Misol:

def faktorial_rekursiv(n):
if n == 0:
return 1
else:
return n * faktorial_rekursiv(n - 1)

Bu yerda faktorial_rekursiv funksiyasi o'zini o'zi chaqiradi. Agar n nolga teng bo'lsa, 1 qaytaradi, aks holda, n va faktorial_rekursiv(n - 1) ni ko'paytiradi.

Qiziqarli Faktlar

  • Rekursiya ko'plab dasturlash tillarida qo'llaniladi va juda ko'p masalalarni yechish uchun samarali usul hisoblanadi.
  • Rekursiv funktsiyalar asosan daraxt tuzilmalarini va murakkab algoritmlarni boshqarish uchun ishlatiladi.

Lambda Funksiyasi

Lambda funktsiyasi — bu bir satrda yozilgan noan'anaviy funksiya. Bu funksiyalar odatda qisqa bo'lib, o'zgaruvchilarga bir necha argumentlar qabul qilib, biror natija qaytaradi.

Lambda Funksiyasining Sintaksisi

lambda argumentlar: ifoda

Misol

Keling, oddiy lambda funktsiyasini ko'raylik:

kvadrat = lambda x: x ** 2
print(kvadrat(5)) # Natija: 25

filter va map Funktsiyalari

  • filter: bu funksiya berilgan shartga mos keladigan elementlarni tanlab olish uchun ishlatiladi.
sonlar = [1, 2, 3, 4, 5, 6, 7, 8, 9]
juft_sonlar = list(filter(lambda x: x % 2 == 0, sonlar))
print(juft_sonlar) # Natija: [2, 4, 6, 8]
  • map: bu funksiya har bir elementga berilgan funksiyani qo'llaydi.
sonlar = [1, 2, 3, 4, 5]
kvadratlar = list(map(lambda x: x ** 2, sonlar))
print(kvadratlar) # Natija: [1, 4, 9, 16, 25]

Misollar

  1. Rekursiya misoli: Fibonacci sonlarini hisoblash.
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
  1. Lambda va filter misoli: 10 dan kichik bo'lgan sonlar.
sonlar = [3, 12, 5, 7, 18, 1]
kichik = list(filter(lambda x: x < 10, sonlar))
print(kichik) # Natija: [3, 5, 7, 1]
  1. Lambda va map misoli: Har bir sonni ikki baravar qilish.
sonlar = [1, 2, 3, 4]
ikkilangan = list(map(lambda x: x * 2, sonlar))
print(ikkilangan) # Natija: [2, 4, 6, 8]

Qiziqarli Faktlar

  • Funksiyalar dasturiy ta'minotning modul tuzilmasini yaratadi va kodni takroriy ishlatishni osonlashtiradi.
  • Python dasturlash tilida funksiyalar bir-biriga funksiyalarni chaqirish imkonini beradi (funksiya ichida funksiya).
  • Funksiyalarni o'rganish dasturlashning asosiy tushunchalaridan biridir, chunki ular ko'plab dasturlash tillarida asosiy komponentlar hisoblanadi.

Xulosa

Funksiyalar dasturlashda muhim ahamiyatga ega. Ular kodni modullar shaklida tashkil qiladi va dasturiy ta'minotning aniqligini oshiradi. Funksiya yordamida biz kodni qisqartirishimiz va uni osonroq ishlatishimiz mumkin. Bugungi darsda siz funksiyaning tuzilishini, qiymat qaytaradigan va qiymat qaytarmaydigan funksiyalarni o'rgandingiz.

Yana biz rekursiya va lambda funksiyalarini o'rgandik. Rekursiya bizga o'zini o'zi chaqiradigan funktsiyalar yaratish imkonini beradi, lambda esa oddiy va qisqa funksiyalar yozish uchun foydalaniladi. filter va map funksiyalari yordamida biz ma'lumotlar ustida turli xil amallarni bajarishimiz mumkin.

Savollar va Javoblar

  1. Funksiya nima?
    • Funksiya — bu bir necha buyruqlarni bir joyda to'plab, ma'lum bir vazifani bajarish uchun yaratilgan dasturiy modul.
  2. Funksiya qanday tuzilishga ega?
    • Funksiya def bilan boshlanadi, keyin nomi va parametrlar, so'ngra kodlar va natijani qaytaruvchi return so'zi mavjud.
  3. Qiymat qaytarmaydigan funksiya qanday ishlaydi?
    • Qiymat qaytarmaydigan funksiya print yordamida ma'lumotlarni konsolga chiqarishi mumkin, lekin hech qanday qiymat qaytarmaydi.
  4. Funksiyani qanday chaqirish mumkin?
    • Funksiya nomini yozib, kerakli parametrlarni berish orqali chaqiriladi.
  5. Rekursiya nima?
    • Rekursiya — bu funksiyaning o'zini o'zi chaqirishi jarayoni.
  6. Iterativ funksiya va rekursiv funksiya o'rtasidagi farq nima?
    • Iterativ funksiya sikl yordamida ishlaydi, rekursiv funksiya esa o'zini o'zi chaqiradi.
  7. Lambda funksiyasi qanday ishlaydi?
    • Lambda funksiyasi qisqa va noan'anaviy funksiya bo'lib, bitta satrda yoziladi.
  8. filter va map funksiyalari qanday ishlaydi?
    • filter funksiyasi berilgan shartga mos keladigan elementlarni tanlab oladi, map esa har bir elementga berilgan funksiyani qo'llaydi.