Fonksiyon nedir? DRY (Kendini Tekrar Etme) ilkesi
Program yazarken belirli bir hesaplamayı ya da işlemi kodun onlarca farklı yerinde tekrar tekrar yapmamız gerekebilir. Örneğin bir e-ticaret uygulamasında ürünün KDV’li fiyatını hesaplamak, sepet tutarını güncellemek ya da kullanıcıya hoş geldin mesajı göstermek gibi işlemler sürekli tekrarlanır. Her seferinde aynı kod satırlarını kopyalayıp yapıştırmak hem kod kalabalığı yaratır hem de bir kural değiştiğinde onlarca yeri tek tek düzeltmeyi gerektirir.
Yazılım dünyasının en temel prensiplerinden biri DRY (Don’t Repeat Yourself - Kendini Tekrar Etme) ilkesidir. Belirli bir görevi yerine getiren, bağımsız olarak test edilebilen ve yeniden kullanılabilen kod bloklarını tek bir isim altında paketleyen yapılara fonksiyon denir. Bir fonksiyon bir kez yazılır, binlerce kez çağrılır.
Python’da şimdiye kadar kullandığımız print(), len(), type() ve int() gibi araçlar Python’ın kendi içinde hazır gelen yerleşik (built-in) fonksiyonlardır. Bu derste ise kendi özel ihtiyaçlarımız için sıfırdan kendi fonksiyonlarımızı nasıl tanımlayacağımızı öğreneceğiz.
KısayolFonksiyonu bir mutfak robotu gibi düşünün: içine malzemeyi (parametreleri) atarsınız, robot düğmesine basıldığında çalışır ve size hazırlanmış yemeği (sonucu) teslim eder.
Fonksiyon tanımlama (def) ve çağırma
Python’da yeni bir fonksiyon oluşturmak için def (define - tanımla) anahtar kelimesi kullanılır. Fonksiyon adına bir isim verilir, yanına parantezler () açılıp kapatılır ve satır sonuna iki nokta üst üste (:) konur.
Fonksiyonun içine ait kodlar mutlaka girintili yazılır; standart girinti 4 boşluktur.
Çağırma KuralıBir fonksiyonu yalnızca tanımlamak onu çalıştırmaz. Fonksiyonun çalışması için adının yanına parantez konularak çağrılması (call edilmesi) şarttır: selamla().
Örnek. Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def duyuru():
print("Sistem Güncellendi")
print("Başladı")
duyuru()
print("Bitti")
- Python def duyuru() bloğunu okur ve belleğe kaydeder; bu aşamada henüz çalıştırmaz.
- İlk çalışan satır: print("Başladı") → ekrana "Başladı" basılır.
- duyuru() fonksiyonu çağrılır → ekrana "Sistem Güncellendi" basılır.
- Son satır: print("Bitti") → ekrana "Bitti" basılır.
CevapBaşladı
Sistem Güncellendi
Bitti
Parametreler ve Argümanlar: Fonksiyona girdi verme
Fonksiyonların dinamik çalışabilmesi için dışarıdan veri alması gerekir. Fonksiyon tanımlanırken parantez içine yazılan değişkenlere parametre, fonksiyon çağrılırken bu parametrelere gönderilen gerçek değerlere ise argüman denir.
İstenirse bir parametreye varsayılan bir değer (default argument) atanabilir. Eğer kullanıcı çağırırken bir değer göndermezse bu varsayılan değer devreye girer; değer gönderirse kullanıcının değeri geçerli olur.
| Tanımlama şekli | Çağrılış örneği | Ekrandaki çıktı | Açıklama |
|---|---|---|---|
def selam(ad): | selam("Deniz") | Merhaba Deniz | Zorunlu tek parametreli fonksiyon |
def topla(x, y): | print(topla(3, 7)) | 10 | İki zorunlu parametreli fonksiyon |
def giris(rol="Üye"): | giris() | Rolünüz: Üye | Varsayılan değer devreye girer |
def giris(rol="Üye"): | giris("Yönetici") | Rolünüz: Yönetici | Gönderilen yeni değer varsayılanı ezer |
selam ve giris fonksiyonlarının gövdesinde print vardır; topla ise sonucu return ile döndürür.
Örnek. Aşağıdaki kod parçası çalıştırıldığında ekrana ne basılır?def kuvvet(sayi, us=2):
print(sayi * us)
kuvvet(5)
kuvvet(5, 3)
- İlk çağrı: kuvvet(5) → us belirtilmediği için varsayılan us=2 kullanılır. 5 * 2 = 10 basılır.
- İkinci çağrı: kuvvet(5, 3) → us=3 gönderildiği için 5 * 3 = 15 basılır.
Cevap10
15
return ifadesi ve print() ile arasındaki hayati fark
Yeni başlayanların en sık yaptığı hata print() ile return ifadelerini aynı şey sanmaktır. Bu iki kavram programlamada tamamen farklı işler yapar:
| Özellik | print() fonksiyonu | return ifadesi |
|---|---|---|
| Görevi | Değeri yalnızca ekrana (konsola) yazı olarak basar | Üretilen değeri çağıran yere geri teslim eder |
| Yeniden kullanılabilirlik | Çıktı havaya uçar, başka hesaplamada kullanılamaz | Dönen değer bir değişkene atanabilir, başka formüllere sokulabilir |
| Döngü / Fonksiyon etkisi | Fonksiyonu durdurmaz, alt satıra devam eder | Fonksiyonu o anda DERHAL bitirir ve dışarı fırlar |
| Varsayılan dönüş | Geriye hiçbir değer döndürmez (None döner) | Belirtilen nesneyi doğrudan programa geri verir |
Altın KuralEğer bir fonksiyonun sonucunu alıp başka bir yerde kullanmak (örneğin toplamak, çarpmak) istiyorsanız ekrana print yapmayın; mutlaka return kullanın.
Örnek. Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def carp(a, b):
return a * b
sonuc = carp(4, 5)
print(sonuc + 10)
- carp(4, 5) çağrılır; 4 * 5 = 20 değeri hesaplanır.
- return ifadesi 20 sayısını çağıran yere teslim eder.
- sonuc değişkeninin içine 20 sayısı atanır.
- sonuc + 10 işlemi yapılır: 20 + 10 = 30.
- print(30) ekrana 30 basar.
Cevap30
Değişken Kapsamı: Yerel (Local) ve Küresel (Global) Scope
Bir değişkenin programın nerelerinden okunabileceğini ve nerelerinden değiştirilebileceğini belirleyen kurala kapsam (scope) denir. Python değişkenleri tanımlandıkları yere göre iki ana sınıfa ayırır.
- Yerel değişken (Local scope): Bir fonksiyonun gövdesinde tanımlanan değişkenler yalnızca o fonksiyonun içinde yaşar. Fonksiyonun çalışması bittiğinde bu değişkenler bellekten tamamen silinir; ana programdan ya da başka fonksiyonlardan onlara ulaşılamaz.
- Küresel değişken (Global scope): Fonksiyonların dışında, ana program düzeyinde tanımlanan değişkenlerdir. Programın her yerinden okunabilirler; ancak fonksiyon içinden bir küresel değişkeni değiştirmek için özel global anahtar kelimesi gerekir.
Yerel kapsam kuralı fonksiyonların birbirinin verilerini kazara ezmesini önler. Aynı isimli iki değişken (örneğin iki ayrı fonksiyonda x adında iki değişken) birbirinden tamamen bağımsız olarak güvenle çalışabilir.
Örnek. Aşağıdaki kod çalıştırıldığında ne olur?def test():
gizli = 42
test()
print(gizli)
- gizli değişkeni test fonksiyonunun içinde oluşturulmuş yerel (local) bir değişkendir.
- Fonksiyon dışındaki print(gizli) satırı bu değişkene erişemez.
- Python NameError: name 'gizli' is not defined hatası verir.
CevapNameError hatası verir (gizli değişkeni yereldir, dışarıdan erişilemez)
Testten önce bunları bil
- return ifadesi fonksiyonu anında sonlandırır
return satırından sonra yazılan kodlar asla çalıştırılmaz; fonksiyon o anda durur ve dışarı çıkar.
- return içermeyen fonksiyon geriye None döndürür
İçinde return olmayan bir fonksiyonu değişkene eşitlerseniz değişkenin değeri None olur.
- Fonksiyon çağırmak için parantez () şarttır
fonksiyon_adi yazmak çalıştırmaz; çalıştırmak için mutlaka fonksiyon_adi() yazmalısınız.
- İçeride tanımlanan değişken dışarıda yaşamaz
Fonksiyon içinde oluşturduğunuz değişkenler yereldir; dışarıya aktarmak için return ile döndürmelisiniz.
Kendini dene
Cevaba dokun — neden öyle olduğunu birlikte görelim.
Python’da yeni bir fonksiyon tanımlamak için hangi anahtar kelime kullanılır?
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def kare(x):
return x * x
print(kare(6))
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def topla(a, b):
print(a + b)
sonuc = topla(3, 4)
print(sonuc)
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def selam(isim="Misafir"):
return f"Merhaba {isim}"
print(selam())
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def hesapla(sayi):
return sayi * 2
return sayi * 10
print(hesapla(5))
Yazılımda «DRY (Don’t Repeat Yourself)» ilkesinin temel amacı nedir?
Bir fonksiyonun içinde tanımlanan değişkenlere ne ad verilir ve bunların yaşam alanı neresidir?
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def islem(x, y=3):
return x + y
print(islem(10, 5))
Bir fonksiyonu yalnızca hesapla şeklinde parantezsiz yazmak ile hesapla() şeklinde parantezli yazmak arasındaki fark nedir?
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?def cift_mi(sayi):
return sayi % 2 == 0
print(cift_mi(8))
Alıştırma bitti — –
Sıradaki konu: İlk küçük program.
0/10 · soru cevaplandı