### Fonksiyonlar Devamı
Python’da, fonksiyon parametrelerinin sadece konum ya da sadece anahtar kelime ile çağrılmasını sağlamak için / ve * sembolleri kullanılır. Bu özellikler, fonksiyonlara girilen argümanların nasıl ve hangi sırayla verilmesi gerektiğini daha net bir şekilde belirtmeye yarar.
Bir fonksiyonun sadece konumla girilen argümanlar almasını istiyorsanız, parametrelerin sonuna / sembolünü ekleyebilirsiniz. Bu durumda, /'dan önce tanımlanan parametreler yalnızca konum yoluyla verilebilir ve anahtar kelime ile verilirse hata alırsınız.
Örnek:
def my_function(x, /):
print(x)
my_function(3) # Bu geçerli, çünkü argüman konumla giriliyor.
my_function(x=3) # Bu geçersiz ve hata verir, çünkü x yalnızca konumla girilmeliydi.Sadece konumla girilen argümanlar, bir fonksiyonun belirli bir sırayla çağrılmasını garanti eder ve fonksiyonun çağrılırken x=... gibi anahtar kelimelerle verilmesini istemediğiniz durumlarda faydalıdır.
Bir fonksiyonun bazı parametrelerinin yalnızca anahtar kelimeyle belirtilmesini istiyorsanız, parametre listesinin başına * sembolü ekleyebilirsiniz. *'den sonraki parametreler yalnızca anahtar kelimeyle girilebilir; yani, doğrudan konumla girilirse hata alınır.
Örnek:
def my_function(*, x):
print(x)
my_function(x=3) # Bu geçerli, çünkü x anahtar kelimeyle belirtilmiş.
my_function(3) # Bu geçersiz ve hata verir, çünkü x anahtar kelime olarak verilmeliydi.Anahtar kelimeyle girilen argümanlar, kodun daha anlaşılır olmasını sağlar. Ayrıca, belirli bir parametrenin yanlış sırayla verilme riskini azaltır, çünkü her parametre anahtar kelimeyle tanımlandığı için hangi değerin hangi parametreye ait olduğu açıkça bellidir.
/sembolü:parametre /biçiminde kullanılır ve yalnızca konum ile girilen parametreleri belirtir.*sembolü:*, parametrebiçiminde kullanılır ve yalnızca anahtar kelimeyle girilen parametreleri belirtir.
Bu özellikler özellikle çok sayıda parametre içeren veya dikkatli çağrılması gereken fonksiyonlarda faydalıdır.
Bir fonksiyonun sonuç olarak bir değer döndürmesi için return ifadesi kullanılır:
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))Bir fonksiyonun kendisini çağırmasına rekürsiyon denir:
def tri_recursion(k):
if k > 0:
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("Rekürsiyon Örneği:")
tri_recursion(6)Rekürsiyon, dikkatli yazılmadığında sonsuz döngüye girme riski taşır.
Python'da değişkenlerin hangi alanlarda geçerli olduğunu belirleyen bir kapsam (scope) kavramı vardır. Fonksiyon içinde tanımlanan değişkenler yalnızca o fonksiyon içinde geçerlidir. Ancak global anahtar kelimesi kullanılarak değişkenler global hale getirilebilir:
def fonksiyon_a():
global a
a = 1
b = 2
return a + b
def fonksiyon_b():
c = 3
return a + c
print(fonksiyon_a()) # Çıktı: 3
print(fonksiyon_b()) # Çıktı: 4Global değişkenler genellikle önerilmez, çünkü başka bir fonksiyonda kazara değiştirilebilirler.
Lambda fonksiyonları, Python'da tek satırlık, küçük ve anonim fonksiyonlar oluşturmak için kullanılır.
Lambda fonksiyonlarının genel yapısı şöyledir:
lambda argüman1, argüman2, ... : ifadeargüman1, argüman2, ...→ Lambda fonksiyonuna girilen parametreler.ifade→ Fonksiyonun geri döndüreceği sonuç, burada yalnızca tek bir ifade olabilir.
-
Basit Toplama İşlemi
toplama = lambda x, y: x + y print(toplama(3, 5)) # Çıktı: 8
- Burada
toplamaisimli bir lambda fonksiyonu tanımlandı. Bu fonksiyon,xveyparametrelerini alır ve bunların toplamını döner.
- Burada
-
Karesini Alma
karesi = lambda x: x ** 2 print(karesi(4)) # Çıktı: 16
karesifonksiyonu bir sayıyı alır ve karesini döner.
-
Koşullu İfade Kullanımı
çift_mi = lambda x: "Çift" if x % 2 == 0 else "Tek" print(çift_mi(5)) # Çıktı: Tek print(çift_mi(4)) # Çıktı: Çift
- Bu örnekte
xsayısının çift olup olmadığını kontrol eden bir lambda fonksiyonu oluşturulmuştur.
- Bu örnekte
-
Liste Elemanlarını Sıralamak
Lambda fonksiyonları,
sorted()gibi fonksiyonlardakeyparametresi ile de kullanılabilir.sayılar = [(1, 2), (4, 1), (5, -1), (3, 3)] sıralı = sorted(sayılar, key=lambda x: x[1]) print(sıralı) # Çıktı: [(5, -1), (4, 1), (1, 2), (3, 3)]
- Burada
sorted()fonksiyonunakeyolarak verilen lambda, her tuple'ın ikinci elemanına göre sıralama yapılmasını sağlıyor.
- Burada
-
Harita (map) Fonksiyonu ile Kullanım
map()fonksiyonu, bir liste gibi veri yapılarının her elemanına belirli bir işlevi uygulamak için kullanılır.sayılar = [1, 2, 3, 4] kareler = list(map(lambda x: x ** 2, sayılar)) print(kareler) # Çıktı: [1, 4, 9, 16]
- Bu örnekte,
map()fonksiyonu ile her sayının karesi alınmıştır.
- Bu örnekte,
Tekrarlayan kodlardan kaçınmak için aynı kod parçasını bir fonksiyon içine almanız önerilir. Böylece, tek bir yerde değişiklik yaparak tüm kodunuzu güncel tutabilirsiniz. Bu, kodunuzu daha okunabilir ve bakımı daha kolay hale getirir.
def fibonacci(n):
fib_sequence = [0, 1]
for i in range(2, n):
next_number = fib_sequence[i - 1] + fib_sequence[i - 2]
fib_sequence.append(next_number)
return fib_sequence[:n]
n = int(input("Kaç Fibonacci sayısı görmek istersiniz? "))
if n <= 0:
print("Lütfen pozitif bir sayı girin.")
else:
print("Fibonacci dizisi:", fibonacci(n))Son haftada Python eğitmimizi sonlandırırken uygulama yaparak bu zamana kadar öğrendiklerimizi pekiştirdik. Proje olarak terminalden çalışan bir öğrenci yönetim programı yazdık. Bundan önceki haftalarda öğrendiğimiz yapıların büyük bir kısımını kullanarak pekiştirmiş olduk. Proje dosyası linki: Proje dosyası için tıklayabilirsiniz...
Verdiğimiz projeyi başarıyla tamamlayan Aziz arkadaşımızın kaynak kodları da burada bulunuyor. Proje dosyası linki: Proje dosyası için tıklayabilirsiniz