Lambdalar

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

2.1 Lambda-funksiyaların təyini

Lambda-funksiyalar, həmçinin anonim funksiyalar kimi tanınır. Bunlar adı olmayan, qısa, birsətrlik funksiyalardır və lambda açar sözü ilə yaradılır.

Adi funksiyalardan fərqli olaraq, hansılar ki def açar sözü ilə təyin olunur, lambda-funksiyalar "uçan-qaçan" yaradılır və adətən, sadə, bir sətirdə icra olunan əməliyyatlar üçün istifadə olunur.

Lambda-funksiyanın sintaksisi lambda açar sözü, onun arxasınca arqumentlər, iki nöqtə və ifadədən ibarətdir:

 
lambda arqumentlər: ifadə
    

Lambda-funksiyalar istənilən sayda arqument qəbul edə bilər, lakin yalnız bir ifadədən ibarət olur. Bu ifadənin dəyəri avtomatik olaraq qaytarılır.

Nümunələr:

Lambda-funksiya Adi funksiya

square = lambda x: x ** 2
print(square(5))  # Çıxış: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Çıxış: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 Lambda-funksiyaların tətbiqi

Lambda-funksiyalar adətən map(), filter()sorted() kimi digər funksiyalarla birlikdə istifadə olunur, həmçinin digər funksiyalara arqument kimi verilir.

map() ilə istifadə

map() funksiyası verilmiş funksiyanı hər bir elementə tətbiq edir və nəticələri olan iterator qaytarır. Lambda-funksiyalar map() ilə istifadə üçün əladır, çünki elementləri çevirmək üçün qısa bir şəkildə funksiyanı təyin etməyə imkan verir.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Çıxış: [1, 4, 9, 16, 25]
        

filter() ilə istifadə

filter() funksiyası iterator qaytarır, burada yalnız verilmiş funksiyanın True qaytardığı elementlər daxildir. Lambda-funksiyalar filtr üçün şərtləri tez təyin etməyə imkan verir.


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Çıxış: [2, 4, 6, 8, 10]

sorted() ilə istifadə

sorted() funksiyası iteratorun elementlərini sıralayır. Lambda-funksiyalar key arqumenti ilə xüsusi sıralama kriteriyasını təyin etmək üçün istifadə olunur.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # Çıxış: ['date', 'apple', 'banana', 'cherry']
        

Lambda-funksiyalar ifadələrdə

Lambda-funksiyaları digər ifadələrdə, məsələn siyahı ifadələrində və dictionary generatorlarında istifadə etmək mümkündür.


pairs = [(1, 'bir'), (2, 'iki'), (3, 'üç'), (4, 'dörd')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Çıxış: [(4, 'dörd'), (1, 'bir'), (3, 'üç'), (2, 'iki')]
        

2.3 Lambda-funksiyalar üçün məhdudiyyətlər

Lambda-funksiyaların adi funksiyalarla müqayisədə bir neçə məhdudiyyəti var:

İfadələrlə məhdudiyyət:

Lambda-funksiyalar yalnız bir ifadə tuta bilər və dövrlər və ya axın idarə operatorları (if, else və s.) kimi kompleks operatorları daxil edə bilməz.

Dokumentasiyanın olmaması:

Lambda-funksiyalar dokumentasiya sətiri (docstring) daxil edə bilmir, bu da onların funksionallığını sənədləşdirməyi çətinləşdirir.

Debug imkanlarının məhdudluğu:

Adın və dokumentasiyanın olmaması səbəbindən lambda-funksiyaları adi funksiyalarla müqayisədə debug etmək daha çətindir.

Lambda-funksiyalar üçün məhdudiyyət nümunəsi

Lambda-funksiyada bir neçə ifadə istifadə etməyə çalışmaq sintaksis xətasına səbəb olacaq:


# Bu kod xəta verəcək
invalid_lambda = lambda x: x ** 2; print(x)
        
    
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION