Kodlama

Fonksiyonlar

def topla(a, b): · return a + b

01

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.

02

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

03

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ğiEkrandaki çıktıAçıklama
def selam(ad):selam("Deniz")Merhaba DenizZorunlu tek parametreli fonksiyon
def topla(x, y):print(topla(3, 7))10İki zorunlu parametreli fonksiyon
def giris(rol="Üye"):giris()Rolünüz: ÜyeVarsayılan değer devreye girer
def giris(rol="Üye"):giris("Yönetici")Rolünüz: YöneticiGö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

04

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:

Özellikprint() fonksiyonureturn ifadesi
GöreviDeğ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ılamazDönen değer bir değişkene atanabilir, başka formüllere sokulabilir
Döngü / Fonksiyon etkisiFonksiyonu durdurmaz, alt satıra devam ederFonksiyonu 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

05

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)

İpuçları

Testten önce bunları bil

  1. 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.

  2. 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.

  3. 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.

  4. İç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.

06

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?

Python’da fonksiyon tanımları def (define) anahtar kelimesiyle başlatı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))

kare(6) fonksiyonu 6 * 6 = 36 değerini return eder ve print fonksiyonu bu 36 değerini ekrana basar.

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)

topla fonksiyonu print(a+b) ile 7 basar ancak return ifadesi olmadığı için geriye None döner; sonuc değişkeni None olur ve print(sonuc) None basar.

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())

Parametreye argüman gönderilmediği için varsayılan değer olan "Misafir" devreye girer ve "Merhaba Misafir" döner.

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))

return ifadesi çalıştığı anda fonksiyon derhal sonlanır; alttaki ikinci return sayi * 10 satırına hiçbir zaman ulaşılamaz.

Yazılımda «DRY (Don’t Repeat Yourself)» ilkesinin temel amacı nedir?

DRY kuralı kod tekrarını önleyerek fonksiyonlar ve modüller aracılığıyla sürdürülebilir yazılım üretmeyi hedefler.

Bir fonksiyonun içinde tanımlanan değişkenlere ne ad verilir ve bunların yaşam alanı neresidir?

Fonksiyon gövdesinde tanımlanan değişkenler yerel (local scope) kapsamdadır ve fonksiyon dışından erişilemezler.

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))

Çağrıda y için 5 argümanı gönderilmiştir; gönderilen değer varsayılan 3 değerini ezer. 10 + 5 = 15.

Bir fonksiyonu yalnızca hesapla şeklinde parantezsiz yazmak ile hesapla() şeklinde parantezli yazmak arasındaki fark nedir?

Fonksiyonun çalıştırılması (invoke/call edilmesi) için mutlaka sonuna parantez () konulmalıdır.

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))

8 % 2 işlemi 0 kalanını verir. 0 == 0 karşılaştırması True sonucunu üretir ve return ile True değeri döndürülür.

Alıştırma bitti — –

Sıradaki konu: İlk küçük program.

0/10 · soru cevaplandı

Kendini dene