
Owen Little
0
4579
117
Python'daki Lambdalar, bilmesi gereken en faydalı, önemli ve ilginç özelliklerden biridir. Ne yazık ki, yanlış anlama ve yanlış anlama da kolaydır..
Bu yazıda, bu gizemli işlevler, bilmeniz gerekenler ve neden yararlı olduklarıyla ilgili bilmeniz gereken her şeyi açıklayacağız..
Bu pratik örneklere dalmadan önce, bir Python sanal ortamı kurmak isteyebilirsiniz Python Sanal Ortamını Nasıl Kullanacağınızı Öğrenin Python Sanal Ortamını Nasıl Kullanacağınızı Öğrenin Deneyimli bir Python geliştiricisi olun ya da yeni başlıyor olun Herhangi bir Python projesi için sanal bir ortam oluşturmak esastır. . Bunu yapmak bile istemiyorsanız, en azından bu örnekleri etkileşimli bir çevrimiçi Python kabuğu ile denemelisiniz. Bu Ücretsiz Çevrimiçi İnteraktif Kabuklarla Tarayıcınızda Python'u Deneyin Bu Ücretsiz Online İnteraktif Kabuklarla Tarayıcınızda Python'u Deneyin… Bu Python örneklerini inceleyerek veya dizilerin ve listelerin temellerini inceleyerek kodu doğrudan tarayıcınızda test edebilirsiniz. İşte bulduğumuz en iyi çevrimiçi Python tercümanları. .
Python'da Lambda Nedir?
Bir lambda sadece Python'da bir fonksiyon tanımlamanın bir yoludur. Bazen bilinir “lambda operatörleri” veya “lambda fonksiyonları”.
Python'u daha önce kullandıysanız, işlevlerinizi muhtemelen kullanarak def anahtar kelime ve şimdiye kadar sizin için iyi çalıştı. Öyleyse neden aynı şeyi yapmanın başka bir yolu var?
Aradaki fark lambda fonksiyonlarının isimsiz olmasıdır.. Yani, adlandırılmaları gerekmeyen fonksiyonlar. Bir durumda küçük, tek seferlik işlevler oluşturmak için kullanılırlar. “gerçek” işlev çok büyük ve hantal olur.
Lambdas, bir değişkene atanabilecek bir fonksiyon nesnesi döndürür. Lambdalar herhangi bir sayıda argümana sahip olabilir, ancak sadece bir ifadeye sahip olabilirler. Lambdas içindeki diğer fonksiyonları çağıramazsınız..
Lambda fonksiyonlarının en yaygın kullanımı, normal bir fonksiyonun tamamını yazmak için aşırı yükleneceği basit tek satırlık bir fonksiyon gerektiren koddur. Bu, aşağıda daha ayrıntılı olarak ele alınmıştır. “Harita, Filtre ve Azaltma Hakkında Ne?”.
Python'da Lambdas Nasıl Kullanılır?
Bir lambda işlevine bakmadan önce, tanımlanan süper temel bir işleve bakalım. “geleneksel” yol:
def add_five (number): dönüş numarası + 5 print (add_five (number = 4))
Bu fonksiyon çok basit, ancak lambdaları göstermeye hizmet ediyor. Seninki bundan daha karmaşık olabilir. Bu işlev, kendisine geçen herhangi bir sayıya beş ekler. numara parametre.
İşte lambda işlevi olarak göründüğü gibi:
add_five = lambda numarası: sayı + 5 yazdırma (add_five (number = 4))
Kullanmak yerine def, kelime lambda kullanıldı. Parantez gerekmez, ancak lambda anahtar kelime parametre olarak oluşturulur. İki nokta, parametreleri ve ifadeyi ayırmak için kullanılır. Bu durumda, ifade sayı + 5.
Kullanmaya gerek yok dönüş anahtar kelime-lambda bunu sizin için otomatik olarak yapar.
İşte iki argümanla bir lambda işlevi nasıl oluşturacağınız:
add_numbers_and_five = lambda sayı1, sayı2: sayı1 + sayı2 + 5 baskı (add_numbers_and_five (sayı1 = 4, sayı2 = 3))
Eğer hala lambdaların noktasında emin değilseniz, bir sonraki bölüm dalacak ve ışığı görmenize yardımcı olacaktır..
Python Lambdas Haritalı, Filtreli ve Düşürülmüş
Python çekirdek kütüphanesinde üç yöntem vardır. harita, azaltmak, ve filtre. Bu yöntemler muhtemelen lambda işlevlerini kullanmak için en iyi nedenlerdir.
harita işlev iki argüman bekler: bir işlev ve bir liste. Bu işlevi alır ve değiştirilen öğelerin listesini bir harita nesnesi olarak döndürerek listedeki her öğeye uygular. liste işlev sonuçta elde edilen harita nesnesini tekrar bir listeye dönüştürmek için kullanılır.
İşte lambda olmadan haritanın nasıl kullanılacağı:
list1 = [2, 4, 6, 8] print (list1) def add_five (number): dönüş numarası + 5 new_list = list (harita (add_five, list1)) baskı (new_list)
Bu harita işlevi oldukça kullanışlıdır, ancak daha iyi olabilirdi. add_five işlev argüman olarak iletilir, ancak ya haritayı her kullandığınızda bir işlev oluşturmak istemezseniz ne olur? Bunun yerine bir lambda kullanabilirsiniz!
İşte aynı kodun neye benzediği, sadece bir lambda ile değiştirilen fonksiyon:
list1 = [2, 4, 6, 8] print (list1) new_list = list (harita (lambda x: x + 5, list1))) yazdırın (new_list)
Gördüğünüz gibi bütün add_five işlev artık gerekli değildir. Bunun yerine, lambda işlevi işleri düzenli tutmak için kullanılır.
İle filtre işlev, işlem aynıdır. filtre bir işlevi alır ve listedeki her öğeye uygular ve yalnızca işlevin True döndürmesine neden olan öğelerle birlikte yeni bir liste oluşturur.
Birincisi, lambdasız:
numbers = [1, 4, 5, 10, 20, 30] print (sayılar) def greater_than_ten_func (number): eğer sayı> 10: return True başkası: return False new_numbers = liste (filtre (daha büyük_than_ten_func, sayılar)) baskı (new_numbers )
Bu kodda yanlış olan bir şey yok, ancak biraz daha uzun sürüyor. Bir lambda'nın kaç tane çizgiyi kaldırabildiğini görelim:
numbers = [1, 4, 5, 10, 20, 30] print (sayılar) new_numbers = list (filtre (lambda x: x> 10, sayılar)) print (yeni sayılar)
Lambda işlevi, tüm gereksinimin yerini aldı greater_than_ten_func! Ve bunu beş basit kelimeyle yaptı. Bu nedenle lambdalar güçlüdür: basit işler için dağınıklığı azaltırlar.
Sonunda, bakalım azaltmak. Azalt başka bir serin Python işlevidir. Bir listedeki tüm öğelere yuvarlama hesaplama uygular. Bunu toplam bir toplamı hesaplamak veya tüm sayıları birlikte çarpmak için kullanabilirsiniz:
functools'tan import, rakamları azaltmak = [10, 20, 30, 40] print (sayılar) def yaz (a, b): a + b döndürür sonuç = azaltmak (yaz, sayılar) print (sonuç)
Bu örneğin içe aktarılması gerekiyor azaltmak -den functools modül, ama endişelenmeyin, functools modülü Python çekirdek kütüphanesinin bir parçasıdır.
Hikaye bir lambda ile aynıdır, bir işleve gerek yoktur:
functools'tan içe aktarma, sayıları azaltma = [10, 20, 30, 40] baskı (sayılar) sonuç = azaltma (lambda a, b: a + b, sayılar) yazdır (sonuç)
Python Lambdas ile Dikkat Edilmesi Gerekenler
Bu örnekler, lambda fonksiyonlarının Python çekirdek kütüphanesinden harita, filtreleme ve azaltma ile birlikte ne kadar kolay olduğunu göstermiştir. Yine de, lambda işlevlerinin yardımcı olmadığı birkaç kullanım alanı vardır..
Temel bir görevden başka bir şey yapıyorsanız veya diğer yöntemleri çağırmak istiyorsanız normal bir işlev kullanın. Lambdalar bir kereye mahsus, anonim işlevler için mükemmeldir, ancak yalnızca tek bir ifadeye sahip olmaları gerekir. Eğer lambda'nız düzenli bir ifadeye benzemeye başlarsa, muhtemelen özel bir yönteme yeniden başvurmanın zamanı gelmiştir..
Daha fazla ipucu için, Python'daki nesne yönelimli programlama kılavuzumuzu inceleyin Python Nesne Yönelimli Programlamaya Yeni Başlayanlar Kılavuzu Python Nesne Yönelimli Programlamaya Yeni Başlayanlar Kılavuzu Python'un güçlü yönlerinden tam anlamıyla yararlanmak için Python'un nasıl çalıştığını öğrenmek isteyeceksiniz nesne yönelimli programlama (OOP). ve Python yeni başlayanlar için SSS kılavuzumuza göz atın Python Programlama Hakkında En Sık Sorulan Sorular Python Programlama Hakkında En Sık Sorulan Sorular Bu makalede, Python hakkında yeni başlayanlar için bilmeniz gereken her şeyi size yönlendiriyoruz. .