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.
filtervamapfunksiyalarini 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
- Rekursiya misoli: Fibonacci sonlarini hisoblash.
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
- Lambda va
filtermisoli: 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]
- Lambda va
mapmisoli: 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
- Funksiya nima?
- Funksiya — bu bir necha buyruqlarni bir joyda to'plab, ma'lum bir vazifani bajarish uchun yaratilgan dasturiy modul.
- Funksiya qanday tuzilishga ega?
- Funksiya
defbilan boshlanadi, keyin nomi va parametrlar, so'ngra kodlar va natijani qaytaruvchireturnso'zi mavjud.
- Funksiya
- Qiymat qaytarmaydigan funksiya qanday ishlaydi?
- Qiymat qaytarmaydigan funksiya
printyordamida ma'lumotlarni konsolga chiqarishi mumkin, lekin hech qanday qiymat qaytarmaydi.
- Qiymat qaytarmaydigan funksiya
- Funksiyani qanday chaqirish mumkin?
- Funksiya nomini yozib, kerakli parametrlarni berish orqali chaqiriladi.
- Rekursiya nima?
- Rekursiya — bu funksiyaning o'zini o'zi chaqirishi jarayoni.
- Iterativ funksiya va rekursiv funksiya o'rtasidagi farq nima?
- Iterativ funksiya sikl yordamida ishlaydi, rekursiv funksiya esa o'zini o'zi chaqiradi.
- Lambda funksiyasi qanday ishlaydi?
- Lambda funksiyasi qisqa va noan'anaviy funksiya bo'lib, bitta satrda yoziladi.
- filter va map funksiyalari qanday ishlaydi?
filterfunksiyasi berilgan shartga mos keladigan elementlarni tanlab oladi,mapesa har bir elementga berilgan funksiyani qo'llaydi.