Python ÖRNEKLERLE Lambda Fonksiyonları
⚡ Akıllı Özet
Lambda functions in Python are small anonymous functions defined with the lambda keyword instead of def. They hold a single expression, take any number of arguments, and are often passed directly to built-ins such as map(), filter(), and sorted().

Lambda Fonksiyonu Nedir? Python?
A Lambda Fonksiyonu Python programlama anonim bir işlev veya adı olmayan bir işlevdir. Birden fazla satırı olmayan küçük ve kısıtlı bir fonksiyondur. Tıpkı normal bir fonksiyon gibi, Lambda fonksiyonu da tek bir ifadeyle birden fazla argümana sahip olabilir.
In Pythonanonim işlevler oluşturmak için lambda ifadeleri (veya lambda formları) kullanılır. Bunu yapmak için şunları kullanacaksınız: lambda anahtar kelime (tıpkı kullandığınız gibi) def Normal fonksiyonları tanımlamak için). Tanımladığınız her anonim işlev Python 3 temel parçaya sahip olacak:
- Lambda anahtar sözcüğü.
- Parametreler (veya bağlı değişkenler) ve
- İşlev gövdesi.
Bir lambda işlevi herhangi bir sayıda parametreye sahip olabilir, ancak işlev gövdesi yalnızca şunları içerebilir: bir ifade. Üstelik lambda tek satırlık bir kodla yazılır ve hemen çağrılabilir. Gelecek örneklerde tüm bunları çalışırken göreceksiniz.
Söz Dizimi ve Örnekler
Lambda fonksiyonunu yazmanın resmi sözdizimi aşağıda verilmiştir:
lambda p1, p2: expression
Burada p1 ve p2 lambda fonksiyonuna iletilen parametrelerdir. İhtiyacınız kadar çok veya az parametre ekleyebilirsiniz.
However, notice that we do not use brackets around the parameters as we do with regular functions. The last part (expression) is any valid Python expression that operates on the parameters you provide to the function.
Örnek 1
Artık lambdaları bildiğinize göre bir örnekle deneyelim. Öyleyse aç IDLE ve aşağıdakileri yazın:
adder = lambda x, y: x + y print (adder (1, 2))
Code açıklama
Burada lambda fonksiyonunun döndürdüğü sonucu tutacak bir değişken tanımlıyoruz.
1. Anonim bir işlevi tanımlamak için kullanılan lambda anahtar sözcüğü.
2. x ve y lambda fonksiyonuna ilettiğimiz parametrelerdir.
3. Bu, ilettiğimiz 2 parametreyi toplayan fonksiyonun gövdesidir. Bunun tek bir ifade olduğuna dikkat edin. Bir lambda fonksiyonunun gövdesine birden fazla ifade yazamazsınız.
4. Fonksiyonu çağırıyoruz ve döndürülen değeri yazdırıyoruz.
Örnek 2
That was a basic example to understand the fundamentals and syntax of lambda. Let us now try to print out a lambda and see the result. Again, open your IDLE ve aşağıdakileri yazın:
#What a lambda returns string='some kind of a useless lambda' print(lambda string : print(string))
Şimdi dosyanızı kaydedin ve programı çalıştırmak için F5 tuşuna basın. Almanız gereken çıktı bu.
Çıktı:
<function <lambda> at 0x00000185C3BF81E0>
What is happening here? Let us look at the code to understand further.
Code Açıklama:
1. Here, we define a dizi that you will pass as a parameter to the lambda.
2. We declare a lambda that calls a print statement and prints the result.
But why does the program not print the string we pass? This is because the lambda itself returns a function object. In this example, the lambda is not being denilen by the print function but is simply dönen the function object and the memory location where it is stored. That is what gets printed at the console.
Örnek 3
Ancak şöyle bir program yazarsanız:
#What a lambda returns #2 x="some kind of a useless lambda" (lambda x : print(x))(x)
And run it by hitting F5, you will see an output like this.
Çıktı:
some kind of a useless lambda
Now, the lambda is being called, and the string we pass gets printed at the console. But what is that weird syntax, and why is the lambda definition covered in brackets? Let us understand that now.
Code Açıklama:
1. Here is the same string we defined in the previous example.
2. In this part, we are defining a lambda and calling it immediately by passing the string as an argument. This is something called an IIFE, and you will learn more about it in the upcoming sections of this tutorial.
Örnek 4
Let us look at a final example to understand how lambdas and regular functions are executed. So, open your IDLE ve yeni bir dosyaya aşağıdakileri yazın:
#A REGULAR FUNCTION def guru( funct, *args ): funct( *args ) def printer_one( arg ): return print (arg) def printer_two( arg ): print(arg) #CALL A REGULAR FUNCTION guru( printer_one, 'printer 1 REGULAR CALL' ) guru( printer_two, 'printer 2 REGULAR CALL \n' ) #CALL A REGULAR FUNCTION THRU A LAMBDA guru(lambda: printer_one('printer 1 LAMBDA CALL')) guru(lambda: printer_two('printer 2 LAMBDA CALL'))
Now, save the file and hit F5 to run the program. If you did not make any mistakes, the output should be something like this.
Çıktı:
printer 1 REGULAR CALL printer 2 REGULAR CALL printer 1 LAMBDA CALL printer 2 LAMBDA CALL
Code Açıklama:
1. A function called guru that takes another function as the first parameter and any other arguments following it.
2. printer_one is a simple function which prints the parameter passed to it and returns it.
3. printer_two is similar to printer_one but without the return statement.
4. In this part, we are calling the guru function and passing the printer functions and a string as parameters.
5. This is the syntax to achieve the fourth step (i.e., calling the guru function) but using lambdas.
Bir sonraki bölümde lambda fonksiyonlarının nasıl kullanılacağını öğreneceksiniz. ) (Map, () Azaltmak, ve Filtre () in Python.
Lambdaları şununla kullanma: Python Yerleşik ins
Lambda işlevleri, yerleşik yöntemleri kullanarak işlemleri gerçekleştirmenin zarif ve güçlü bir yolunu sağlar Python. Bu mümkündür çünkü lambdalar hemen çağrılabilir ve bu işlevlere argüman olarak iletilebilir.
IIFE'de Python Lambda
IIFE için standlar hemen işlev yürütmeyi başlattı. It means that a lambda function is callable as soon as it is defined. Let us understand this with an example; fire up your IDLE ve aşağıdakileri yazın:
(lambda x: x + x)(2)
İşte çıktı ve kod açıklaması:
Lambdaların hemen çağrılabilme özelliği, bunları harita() ve azalt() gibi işlevler içinde kullanmanıza olanak tanır. Bu işlevleri bir daha kullanmak istemeyebileceğiniz için kullanışlıdır.
filtredeki lambdalar()
Filtre işlevi, bir dizi öğeden belirli bazı öğeleri seçmek için kullanılır. Sıra, listeler, kümeler, tuple'lar vb. gibi herhangi bir yineleyici olabilir.
The elements which will be selected are based on some pre-defined constraint. It takes 2 parameters:
- Filtreleme kısıtlamasını tanımlayan bir işlev
- Bir dizi (listeler, tuple'lar vb. gibi herhangi bir yineleyici)
Örneğin,
sequences = [10,2,8,7,5,4,3,11,0, 1] filtered_result = filter (lambda x: x > 4, sequences) print(list(filtered_result))
İşte çıktı:
[10, 8, 7, 5, 11]
Code Açıklama:
1. İlk ifadede bazı sayıların yer aldığı dizi adı verilen bir liste tanımlıyoruz.
2. Burada, filter() işlevi tarafından döndürülen filtrelenmiş değerleri saklayacak olan filtered_result adında bir değişken bildiririz.
3. Listenin her öğesi üzerinde çalışan ve 4'ten büyükse true değerini döndüren bir lambda işlevi.
4. Filtre işlevi tarafından döndürülen sonucu yazdırın.
haritadaki lambdalar()
The map function is used to apply a particular operation to every element in a sequence. Like filter(), it also takes 2 parameters:
- A function that defines the operation to perform on the elements
- Bir veya daha fazla dizi
Örneğin, verilen listedeki sayıların karelerini yazdıran bir program şöyledir:
sequences = [10,2,8,7,5,4,3,11,0, 1] filtered_result = map (lambda x: x*x, sequences) print(list(filtered_result))
Çıktı:
[100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Code Açıklama:
1. Here, we define a list called sequences which contains some numbers.
2. We declare a variable called filtered_result which will store the mapped values.
3. A lambda function which runs on each element of the list and returns the square of that number.
4. Print the result returned by the map function.
azaltımdaki lambdalar ()
Map() gibi azaltma işlevi, bir dizideki her öğeye bir işlem uygulamak için kullanılır. Ancak işleyişi bakımından haritadan farklıdır. Bir çıktıyı hesaplamak için, azalt() işlevinin izlediği adımlar şunlardır:
) 1 Adım Tanımlanan işlemi dizinin ilk 2 öğesi üzerinde gerçekleştirin.
) 2 Adım Save this result.
) 3 Adım Kaydedilen sonuç ve sıradaki bir sonraki öğe ile işlemi gerçekleştirin.
) 4 Adım Daha fazla öğe kalmayıncaya kadar tekrarlayın.
Ayrıca iki parametre alır:
- Gerçekleştirilecek işlemi tanımlayan bir fonksiyon
- Bir dizi (listeler, tuple'lar vb. gibi herhangi bir yineleyici)
Örneğin, bir listedeki tüm öğelerin çarpımını döndüren bir program:
from functools import reduce sequences = [1,2,3,4,5] product = reduce (lambda x, y: x*y, sequences) print(product)
İşte çıktı:
120
Code Açıklama:
1. Import reduce from the functools module.
2. Here, we define a list called sequences which contains some numbers.
3. We declare a variable called product which will store the reduced value.
4. A lambda function that runs on each element of the list. It will return the product of that number as per the previous result.
5. Print the result returned by the reduce function.
Neden lambda işlevlerini kullanıyorsunuz (ve neden kullanmıyorsunuz)?
Bir sonraki bölümde göreceğiniz gibi lambdalar, yorumlayıcı düzeyinde normal işlevlerle aynı şekilde ele alınır. Bir bakıma lambdaların, tek bir ifade döndüren işlevlerin yazılması için kompakt bir sözdizimi sağladığını söyleyebilirsiniz.
Ancak lambdaları ne zaman kullanmanın iyi bir fikir olduğunu ve ne zaman onlardan kaçınmanız gerektiğini bilmelisiniz. Bu bölümde, kullanılan tasarım ilkelerinden bazılarını öğreneceksiniz. Python geliştiriciler lambda yazarken.
One of the most common use cases for lambdas is in functional programming, as Python işlevsel programlama olarak bilinen bir programlama paradigmasını (veya stilini) destekler.
It allows you to provide a function as a parameter to another function (for example, in map, filter, etc.). In such cases, using lambdas offers an elegant way to create a one-time function and pass it as the parameter.
Ne zaman Lambda'yı kullanmamalısınız?
Karmaşık lambda işlevlerini üretim ortamında asla yazmamalısınız. Kodunuzu koruyan kodlayıcıların onu şifresini çözmesi çok zor olacaktır. Kendinizi karmaşık tek satırlık ifadeler yaparken bulursanız, uygun bir işlev tanımlamak çok daha üstün bir uygulama olacaktır. En iyi uygulama olarak, basit kodun her zaman karmaşık koddan daha iyi olduğunu hatırlamanız gerekir.
Lambdalar ve Düzenli işlevler
As previously stated, lambdas are just functions which do not have an identifier bound to them. In simpler words, they are functions with no names (hence, anonymous). Here is a table to illustrate the difference between lambdas and regular functions in Python.
| Lambdalar | Düzenli İşlevler |
|---|---|
Sözdizimi:
lambda x : x + x
|
Sözdizimi:
def (x) : return x + x |
| Lambda fonksiyonlarının gövdelerinde yalnızca bir ifade bulunabilir. | Düzenli fonksiyonların gövdelerinde birden fazla ifade ve ifade bulunabilir. |
| Lambdas do not have a name associated with them. That is why they are also known as anonymous functions. | Normal işlevlerin bir adı ve imzası olmalıdır. |
| Lambdalar, gövde otomatik olarak döndürüldüğü için bir return ifadesi içermez. | Functions which need to return a value should include a return statement. |
Farklılıkların açıklaması
Lambda ile normal fonksiyon arasındaki temel fark, lambda fonksiyonunun yalnızca tek bir ifadeyi değerlendirmesi ve bir fonksiyon nesnesi vermesidir. Sonuç olarak lambda fonksiyonunun sonucunu bir önceki örnekte yaptığımız gibi isimlendirip programımızda kullanabiliriz.
Yukarıdaki örnek için normal bir fonksiyon şöyle görünecektir:
def adder (x, y): return x + y print (adder (1, 2))
Burada bir tanımlama yapmamız gerekiyor. isim hangi fonksiyon için İade sonuç ne zaman biz çağrı it. A lambda function does not contain a return statement because it will have only a single expression which is always returned by default. You do not even have to assign a lambda either, as it can be immediately invoked (see the previous section). As you will see, lambdas become particularly powerful when we use them with Python'nin yerleşik işlevleri.
Ancak yine de lambdaların tek bir ifade döndüren bir fonksiyondan (yukarıdaki gibi) ne kadar farklı olduğunu merak ediyor olabilirsiniz. Çevirmen düzeyinde pek bir fark yoktur. Şaşırtıcı gelebilir ama içinde tanımladığınız herhangi bir lambda işlevi Python yorumlayıcı tarafından normal bir fonksiyon olarak ele alınır.
At the bytecode level, the two definitions are handled in the same way by the Python interpreter. Now, you cannot name a function lambda tarafından rezerve edildiğinden Python, but any other function name will yield the same bytecode.
