Python'da Fonksiyonlar
Bu makale, Python'daki fonksiyonları açıklar.
YouTube Video
Python'da Fonksiyonlar
Python'daki fonksiyonlar, yeniden kullanılabilir kod bloklarını tanımlamak için temel bir özelliktir ve gerektiğinde çağrılarak programınızı düzenlemenizi ve basitleştirmenizi sağlar. Fonksiyonları kullanmak, kod okunabilirliğini artırabilir ve DRY prensibine (Kendini Tekrarlama, aynı kodu birden çok kez yazmaktan kaçınma) uymanıza olanak tanır.
Fonksiyon Tanımlama
Fonksiyonlar def
anahtar kelimesi kullanılarak tanımlanır. Temel sözdizimi şu şekildedir:.
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_value
Örneğin, iki sayıyı toplayan bir fonksiyon tanımlamak için şunu yazarsınız:.
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + y
Fonksiyon Çağırma
Tanımlanmış bir fonksiyon şu şekilde çağrılıp kullanılabilir:.
1result = add(3, 4)
2print(result) # Output: 7
Bir Fonksiyonun Bileşenleri
-
Fonksiyon Adı: Fonksiyonu çağırmak için kullanılan ad.
-
Argümanlar (Parametreler): Çağrı sırasında iletilen veriyi alan değişken adları. Sıfır veya daha fazla argüman tanımlayabilirsiniz.
-
Dokümantasyon Dizisi (Docstring): Bir fonksiyonun amaçlarını ve kullanımını tanımlamak için kullanılan bir dizi. İsteğe bağlı.
-
Fonksiyon Gövdesi: Fonksiyonun gerçekleştirdiği talimatların yazıldığı girintili bir blok.
-
Dönüş Değeri:
return
ifadesi kullanılarak çağırana döndürülen değer.return
kullanılmazsa, varsayılan olarakNone
döndürülür.
Argüman Türleri
Python'da birkaç farklı argüman türü vardır.
- Konumlu Argümanlar: Fonksiyonlara argüman iletmenin standart yolu.
- Varsayılan Argümanlar: Çağrı sırasında atlanabilen varsayılan değerlere sahip argümanlar.
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"
- Değişken Uzunluklu Argümanlar: Bir demet olarak birden fazla konumlu argüman almak için
*args
ve bir sözlük olarak almak için**kwargs
kullanılır.
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}
Fonksiyonları doğru şekilde kullanarak Python programlarını daha etkili ve verimli bir şekilde yazabilirsiniz.
Python'da Lambda Fonksiyonları
Python'da lambda
fonksiyonları, isimsiz ve özlü fonksiyonlar tanımlamak için kullanılır. Normal def
anahtar kelimesiyle tanımlanan fonksiyonlardan farklı olarak, lambda
kısa, tek satırlık fonksiyonlar oluşturmanıza olanak tanır. Burada, Python'daki lambda
fonksiyonlarını ayrıntılı bir şekilde açıklayacağız.
Lambda
Fonksiyonlarının Temelleri
Lambda
fonksiyonları, isimsiz fonksiyonlar olarak da adlandırılır ve adından da anlaşılacağı üzere ismi olmayan geçici fonksiyonlar tanımlamak için kullanılır. Temel sözdizimi şu şekildedir:.
1lambda arguments: expression
argümanlar
: Fonksiyonun argümanlarını belirtir. Virgüllerle ayrılmış birden fazla argüman belirtilebilir.ifadeler
: Argümanlara göre değerlendirilen bir ifadedir. İfadenin sonucu, fonksiyonun dönüş değeri olur.
Örneğin, aşağıdaki kod iki sayıyı toplamak için bir lambda
fonksiyonunu tanımlar ve çalıştırır.
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8
Bu örnekte, lambda x, y: x + y
, x
ve y
adında iki argüman alan ve bunların toplamını döndüren bir lambda
fonksiyonudur.
Lambda
Fonksiyonlarının Kullanım Alanları
Lambda
fonksiyonları, anlık olarak basit bir fonksiyon tanımlamanız gereken durumlarda kullanışlıdır. Özellikle aşağıdaki durumlarda yaygındır:.
-
Fonksiyonlara Argüman Olarak Geçildiğinde
- Kısa ve geçici fonksiyonları geçirirken, yüksek dereceli fonksiyonlarda (diğer fonksiyonları argüman olarak alan fonksiyonlar) kullanışlıdır.
-
Listeleri Sıralamak İçin Anahtar Belirlediğinizde
Sort()
veyasorted()
gibi fonksiyonlarda sıralama ölçütlerini (anahtarları) belirlemek için kullanışlıdır.
Üst Düzey Fonksiyonlarda Kullanım Örneği
Üst düzey fonksiyonların tipik örnekleri arasında map()
, filter()
ve reduce()
bulunur. Bu fonksiyonlar, başka fonksiyonları argüman olarak alır ve bunları liste gibi dizilere uygular.
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]
Bu örnekte, bir listedeki her sayıyı karesini almak için lambda
fonksiyonu map()
fonksiyonuna geçirilir.
Liste sıralamasını kullanma örnekleri
lambda
fonksiyonu, bir liste sıralanırken özel bir anahtar belirtmek için bazen kullanılabilir. Örneğin, aşağıdaki kod bir listeyi ikili grubun ikinci öğesine göre sıralar.
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
Bu örnekte, ikili grupları ikinci öğelerine (bir string) göre sıralamak için bir lambda
fonksiyonu kullanılır.
filter()
ve lambda
filter()
fonksiyonu, bir liste (veya diğer yineleyiciler) içindeki öğeleri verilen bir koşula dayanarak filtrelemek için kullanılır.
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]
Bu örnekte, bir listedeki çift sayılar filtrelenerek yeni bir liste oluşturulur.
lambda
ve reduce()
reduce()
fonksiyonu, bir listeyi tek bir değere indirmek için kullanılır. Bu, bir lambda
fonksiyonu kullanılarak kolayca uygulanabilir.
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120
Bu örnekte, listedeki tüm öğeler birbiriyle çarpılarak bir sonuç elde edilir.
Karmaşık lambda
fonksiyonları kullanmaktan kaçının
lambda
fonksiyonlarının avantajı kısa olmalarıdır, ancak karmaşık mantık uygularken okunması zor hale gelirler. Bu nedenle, bir satırda ifade edilebilecek basit işlemler için kullanımları uygundur. Karmaşık işlemler için, def
ile bir fonksiyon tanımlamak daha okunabilir ve sürdürülebilir olacaktır.
Örneğin, aşağıdaki gibi karmaşık lambda
fonksiyonlarını kullanmaktan kaçınmalısınız.
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)
Bu durumda, aşağıda gösterildiği gibi def
ile tanımlanmış bir fonksiyon kullanmak daha iyidir.
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2
Sonuç
Python'un lambda
fonksiyonları, geçici ve kısa fonksiyonlar tanımlamak için kullanışlı bir araçtır. Bunlar, genellikle yüksek dereceli fonksiyonlarda veya liste işlemlerinde belirli koşulları özlü bir şekilde tanımlamak için kullanılır. Ancak, lambda
fonksiyonları basit görevlerle sınırlandırılmalı ve karmaşık mantık için def
fonksiyonları tercih edilmelidir.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.