Fonksiyonlar

def ile fonksiyon tanımlamayı, parametre ve return ile kodu yeniden kullanmayı öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Fonksiyon, bir işi yapan kod parçasına bir isim verip o işi istediğimiz zaman tek satırla tekrar tekrar çağırmamızı sağlayan bir yapıdır.

Üretilecek kanıt

Bir öğrencinin girdiği notun geçer mi kalır mı olduğunu söyleyen bir fonksiyon yaz. gecti_mi adında, not parametresi alan bir fonksiyon tanımla. Not 50 veya daha büyükse True , değilse False döndür. Fonksiyonu birkaç farklı notla çağırıp sonucu ekrana yazdır. Başlangıç için ipucu: def gecti_mi(notu): if notu >= 50: return True else: return False…

Kontrol tuzağı

Fonksiyonu çağırmayı unutmak Sadece def ile fonksiyon yazmak onu çalıştırmaz. Fonksiyonun çalışması için ismini yazıp parantez açman gerekir. def selam_ver(): print("Merhaba!") selam_ver # yanlış: fonksiyon çalışmaz selam_ver() # doğru: fonksiyon çalışır return yerine sadece print kullanmak Sonucu başka bir yerde…

Sonraki bağlantı

Hata Mesajlarını Okumak: Python bir hata verdiğinde panik yapmadan mesajı okumayı, hatanın türünü ve satırını bulmayı öğreniyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulListeler ve Sözlükler
İçerikStandart ders · 1.453 kelime
Son güncelleme

Bir cümlelik özet

Fonksiyon, bir işi yapan kod parçasına bir isim verip o işi istediğimiz zaman tek satırla tekrar tekrar çağırmamızı sağlayan bir yapıdır.

Neden önemli?

Bir program büyüdükçe aynı işi birden çok yerde yapmamız gerekir. Bir dikdörtgenin alanını bir yerde, sonra başka bir yerde, sonra bir daha hesaplarsın. Aynı satırları defalarca yazmak hem yorucudur hem de hataya açıktır: bir yerde düzeltirsin, diğer yerde unutursun.

Fonksiyonlar bu sorunu çözer. Bir işi bir kez yazarız, ona bir isim veririz ve sonra o ismi söyleyerek işi baştan sona tekrar çalıştırırız. Böylece kodumuz kısalır, okunması kolaylaşır ve bir hatayı tek bir yerde düzeltmemiz yeterli olur. Fonksiyonlar, programlamada "kendini tekrar etme" fikrinin en temel aracıdır.

Fonksiyon nedir?

Bir fonksiyonu, bir düğmeye takılmış hazır bir tarif gibi düşünebilirsin. Tarifi bir kez yazarsın; sonra ne zaman istersen düğmeye basar ve tarif çalışır.

Python'da bir fonksiyon def anahtar kelimesiyle tanımlanır. def, "define" yani "tanımla" kelimesinin kısasıdır.

def selam_ver():
    print("Merhaba!")
    print("Bugün kod yazıyoruz.")

Burada selam_ver fonksiyonun ismidir, () parantezleri fonksiyona ait olduğunu gösterir ve satır sonundaki : işareti bloğun başladığını söyler. İçerideki iki satır 4 boşluk içeride yazılmıştır. Bu içeriye kaydırmaya girinti (indentation) denir ve Python'da zorunludur: girintili satırlar fonksiyonun gövdesidir, yani fonksiyon çalışınca yapılacak işlerdir.

Dikkat: Yukarıdaki kodu çalıştırınca ekrana hiçbir şey yazılmaz. Çünkü fonksiyonu sadece tanımladık, henüz çağırmadık. Bir fonksiyonu çalıştırmak için ismini yazıp parantez açıp kaparız:

def selam_ver():
    print("Merhaba!")
    print("Bugün kod yazıyoruz.")

selam_ver()
selam_ver()

Bu program iki kez "Merhaba!" ve "Bugün kod yazıyoruz." yazar. Tarifi bir kez yazdık, iki kez çağırdık. İşte fonksiyonun gücü budur.

Parametreler ve return

Yukarıdaki fonksiyon her seferinde aynı işi yapıyor. Ama çoğu zaman fonksiyona bir bilgi verip ona göre çalışmasını isteriz. Fonksiyona dışarıdan verdiğimiz bu bilgilere parametre denir.

Parametre: fonksiyona bilgi vermek

Parametreleri parantezin içine yazarız. Bir dikdörtgenin alanını hesaplayan bir fonksiyon yazalım. Alan = genişlik × yükseklik olduğu için fonksiyona iki bilgi vermeliyiz:

def alan_yaz(genislik, yukseklik):
    alan = genislik * yukseklik
    print("Alan:", alan)

alan_yaz(5, 3)
alan_yaz(10, 2)

Burada genislik ve yukseklik birer parametredir. alan_yaz(5, 3) diye çağırdığımızda genislik 5, yukseklik 3 olur ve ekrana Alan: 15 yazılır. İkinci çağrıda Alan: 20 yazılır. Aynı fonksiyon, farklı değerlerle farklı sonuçlar üretti.

return: sonucu geri vermek

alan_yaz sonucu ekrana yazıyor ama bize geri vermiyor. Çoğu zaman sonucu ekrana yazmak yerine onu geri döndürüp başka bir işlemde kullanmak isteriz. Bunun için return kullanırız. return, "hesapladığım değeri fonksiyonu çağıran yere geri gönder" demektir.

def alan_hesapla(genislik, yukseklik):
    return genislik * yukseklik

birinci = alan_hesapla(5, 3)
ikinci = alan_hesapla(10, 2)
print("Toplam alan:", birinci + ikinci)

Burada alan_hesapla(5, 3) bize 15 değerini geri verir ve biz onu birinci değişkenine koyarız. Aynı şekilde ikinci 20 olur. Sonra bu iki sonucu toplayıp Toplam alan: 35 yazdırırız.

print ile return arasındaki farkı unutma: print bir şeyi sadece ekranda gösterir, return ise değeri programda kullanılmak üzere geri verir. Bir return çalışınca fonksiyon hemen orada biter.

Kodu yeniden kullanmak ve yerel değişkenler

Şimdi bir sayının çift olup olmadığını söyleyen bir fonksiyon yazalım. Bir sayı 2'ye tam bölünüyorsa çifttir. Bunu % 2 == 0 ile kontrol ederiz (% kalanı verir).

Doğru/yanlış döndüren fonksiyon

def cift_mi(sayi):
    if sayi % 2 == 0:
        return True
    else:
        return False

print(cift_mi(4))
print(cift_mi(7))

Bu program önce True (doğru), sonra False (yanlış) yazar. cift_mi fonksiyonu bir soruya "evet" ya da "hayır" cevabı verir gibi çalışır. Artık bu fonksiyonu bir listedeki tüm sayılar için tekrar tekrar kullanabiliriz:

sayilar = [3, 8, 11, 20, 15]
for sayi in sayilar:
    if cift_mi(sayi):
        print(sayi, "çift")
    else:
        print(sayi, "tek")

Fonksiyonu bir kez yazdık; döngü içinde beş kez çağırdık. Kod hem kısa hem de anlaşılır oldu.

Yerel değişken nedir?

Bir fonksiyonun içinde oluşturduğumuz değişkenler yalnız o fonksiyonun içinde yaşar. Bunlara yerel değişken denir. Fonksiyon bitince bu değişkenler ortadan kalkar ve dışarıdan onlara ulaşamayız.

def alan_hesapla(genislik, yukseklik):
    alan = genislik * yukseklik
    return alan

print(alan_hesapla(4, 6))
print(alan)   # HATA: alan burada tanımlı değil

Buradaki alan değişkeni alan_hesapla fonksiyonunun içinde yaşar. Fonksiyonun dışında print(alan) yazınca Python hata verir, çünkü alan orada tanımlı değildir. Bu aslında iyi bir şeydir: her fonksiyon kendi kutularıyla çalışır, birbirinin değişkenlerini yanlışlıkla bozmaz.

Mini uygulama

Bir öğrencinin girdiği notun geçer mi kalır mı olduğunu söyleyen bir fonksiyon yaz.

  1. gecti_mi adında, not parametresi alan bir fonksiyon tanımla.
  2. Not 50 veya daha büyükse True, değilse False döndür.
  3. Fonksiyonu birkaç farklı notla çağırıp sonucu ekrana yazdır.

Başlangıç için ipucu:

def gecti_mi(notu):
    if notu >= 50:
        return True
    else:
        return False

print(gecti_mi(75))
print(gecti_mi(40))

Kendi çözümünü yazdıktan sonra şunu dene: notları bir liste içine koy ve bir döngü ile hepsini tek tek kontrol et.

Uygulama laboratuvarı: Fonksiyonlar

Fonksiyonlar konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Fonksiyon nedir? ile Parametre: fonksiyona bilgi vermek arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: bir dosyadaki satırları okuyup basit özet çıkaran araç. Dersin ana hedefi “def ile fonksiyon tanımlamayı, parametre ve return ile kodu yeniden kullanmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Fonksiyonlar” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir dosyadaki satırları okuyup basit özet çıkaran araç senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Fonksiyon nedir? ve Parametre: fonksiyona bilgi vermek ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Fonksiyonu çağırmayı unutmak

Sadece def ile fonksiyon yazmak onu çalıştırmaz. Fonksiyonun çalışması için ismini yazıp parantez açman gerekir.

def selam_ver():
    print("Merhaba!")

selam_ver   # yanlış: fonksiyon çalışmaz
selam_ver() # doğru: fonksiyon çalışır

return yerine sadece print kullanmak

Sonucu başka bir yerde kullanacaksan print yeterli değildir; değeri return ile geri vermelisin. print sadece ekrana yazar, geriye bir değer bırakmaz.

Parametre sayısını karıştırmak

Fonksiyon iki parametre bekliyorsa onu iki değerle çağırmalısın. Eksik veya fazla değer verirsen Python hata verir.

def alan_hesapla(genislik, yukseklik):
    return genislik * yukseklik

alan_hesapla(5)   # HATA: yukseklik verilmedi

Yerel değişkene dışarıdan ulaşmaya çalışmak

Bir fonksiyonun içindeki değişken dışarıda tanımlı değildir. O değeri dışarıda kullanmak istiyorsan return ile geri döndür.

Güvenlik notu

Fonksiyonlar bilgisayarına zarar vermez, ama internette bulduğun her kodu düşünmeden çalıştırmamalısın. Yalnız kendi yazdığın veya öğretmeninin/velinin güvendiği kodları çalıştır. Ayrıca programlarında adın, adresin, okulun gibi kişisel bilgileri koda gömme ve bunları başkalarıyla paylaşma.

Ders özeti

Kontrol soruları

  1. Bir fonksiyonu Python'da hangi anahtar kelimeyle tanımlarız?
  2. Fonksiyonu sadece tanımlamak onu çalıştırmaya yeter mi? Çalıştırmak için ne yapmalıyız?
  3. Parametre nedir?
  4. print ile return arasındaki temel fark nedir?
  5. Yerel değişken ne demektir?

Cevaplar

  1. def anahtar kelimesiyle tanımlarız. Örneğin def selam_ver(): bir fonksiyon başlatır.
  2. Hayır, yetmez. Tanımlamak tarifi yazmaktır; çalıştırmak için fonksiyonun ismini yazıp parantez açıp kapamamız, yani onu çağırmamız gerekir: selam_ver().
  3. Parametre, fonksiyona dışarıdan verdiğimiz bilgidir. Fonksiyon bu bilgiye göre çalışır. Örneğin alan_hesapla(genislik, yukseklik) fonksiyonunda genislik ve yukseklik birer parametredir.
  4. print bir değeri yalnız ekranda gösterir; geriye bir sonuç bırakmaz. return ise değeri fonksiyonu çağıran yere geri verir; böylece o değeri bir değişkene koyabilir veya başka işlemde kullanabiliriz.
  5. Yerel değişken, bir fonksiyonun içinde oluşturulan ve yalnız o fonksiyonun içinde yaşayan değişkendir. Fonksiyon bitince ortadan kalkar ve dışarıdan ona ulaşılamaz.

Kaynak ve doğrulama notu

“Fonksiyonlar” dersi için doğrulama odağı Fonksiyon nedir? ile Parametre: fonksiyona bilgi vermek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.

Sonraki ders

Hata Mesajlarını Okumak: Python bir hata verdiğinde panik yapmadan mesajı okumayı, hatanın türünü ve satırını bulmayı öğreniyoruz.

Quiz’i BaşlatPython Temelleri bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.