Python fonksiyon yazma (def) Test 1

Soru 06 / 10

🎓 Python fonksiyon yazma (def) Test 1 - Ders Notu

Bu ders notu, Python'da fonksiyon tanımlama ve kullanma (def anahtar kelimesi) üzerine yapılan "Test 1" için temel konuları, kavramları ve önemli noktaları sade bir dille özetlemektedir.

📌 Fonksiyon Nedir ve Neden Kullanılır?

Fonksiyonlar, belirli bir görevi yerine getirmek üzere bir araya getirilmiş kod bloklarıdır. Tıpkı bir mutfakta farklı yemekleri pişirmek için ayrı tarifler olması gibi, Python'da da farklı işler için fonksiyonlar yazılır.

  • Kod Tekrarını Önler: Aynı işlemi birden fazla kez yapmanız gerektiğinde, kodu tekrar yazmak yerine bir fonksiyon tanımlayıp onu çağırırsınız. Bu, kodunuzu daha kısa ve yönetilebilir yapar.
  • Okunabilirliği Artırır: Büyük ve karmaşık programları küçük, anlaşılır parçalara böler. Her fonksiyon belirli bir işi yaptığı için kodunuzu okumak ve anlamak kolaylaşır.
  • Modülerlik Sağlar: Programınızı bağımsız, yeniden kullanılabilir parçalara ayırmanıza olanak tanır. Bir fonksiyonda yapılan değişiklikler, diğer fonksiyonları etkilemez (doğru kullanıldığında).

💡 İpucu: Bir fonksiyonu bir "mini program" gibi düşünebilirsiniz. Kendi girdileri (parametreler) olabilir, belirli bir işi yapar ve bir çıktı (dönüş değeri) üretebilir.

📌 Fonksiyon Tanımlama (def Anahtar Kelimesi)

Python'da bir fonksiyon tanımlamak için def anahtar kelimesini kullanırız. Bu, Python'a "şimdi bir fonksiyon tanımlıyorum" demenin yoludur.

  • Söz Dizimi (Syntax): def fonksiyon_adi(parametre1, parametre2): şeklinde başlar.
  • def: Fonksiyon tanımlamak için kullanılan anahtar kelime.
  • fonksiyon_adi: Fonksiyonunuza verdiğiniz isimdir. Anlamlı ve küçük harflerle yazılması iyi bir uygulamadır (örneğin: hesapla_ortalama).
  • (parametreler): Fonksiyonun dışarıdan alacağı değerleri temsil eden değişkenlerdir. İsteğe bağlıdır, fonksiyon hiç parametre almayabilir (()).
  • : (İki Nokta Üst Üste): Fonksiyon başlığının bittiğini ve fonksiyon bloğunun başladığını belirtir.
  • İçerik (Blok): İki nokta üst üste'den sonra gelen ve girinti (indentation) ile başlayan tüm satırlar fonksiyonun gövdesini oluşturur. Bu girinti, Python için çok önemlidir!

📝 Örnek:

def merhaba_yaz(): # Parametresiz fonksiyon
    print("Merhaba Dünya!")

def topla(sayi1, sayi2): # İki parametreli fonksiyon
    sonuc = sayi1 + sayi2
    print(sonuc)

📌 Parametreler ve Argümanlar

Fonksiyonlar genellikle dışarıdan bilgi alarak çalışır. Bu bilgilere "parametre" ve "argüman" denir.

  • Parametreler: Fonksiyonu tanımlarken parantez içinde belirttiğimiz değişken isimleridir. Bunlar, fonksiyonun almayı beklediği değerlerin yer tutucularıdır.
  • Argümanlar: Fonksiyonu çağırırken parametrelere gönderdiğimiz gerçek değerlerdir.
  • Pozisyonel Argümanlar: Argümanların sırası, parametrelerin sırasıyla eşleşmelidir.
  • Anahtar Kelime (Keyword) Argümanlar: Argümanları gönderirken parametre isimlerini kullanarak sıradan bağımsız olarak değer atayabilirsiniz.

📝 Örnek:

def selamla(isim, yas): # 'isim' ve 'yas' parametrelerdir
    print(f"Merhaba {isim}, {yas} yaşındasın.")

# Fonksiyonu çağırırken argümanları gönderiyoruz:
selamla("Ayşe", 30) # "Ayşe" ve 30 argümanlardır (pozisyonel)
selamla(yas=25, isim="Mehmet") # Anahtar kelime argümanlar

⚠️ Dikkat: Pozisyonel argümanlar her zaman anahtar kelime argümanlardan önce gelmelidir.

📌 Fonksiyon Çağırma

Bir fonksiyonu tanımlamak onu çalıştırmak anlamına gelmez. Tanımladığınız fonksiyonun içindeki kodu çalıştırmak için onu "çağırmanız" gerekir.

  • Fonksiyonun adını ve ardından parantezleri () kullanarak çağrılır.
  • Eğer fonksiyon parametre alıyorsa, bu parantezlerin içine argümanları göndermeniz gerekir.

📝 Örnek:

def gunaydin():
    print("Günaydın!")

def carp(x, y):
    print(x * y)

gunaydin() # Fonksiyonu çağırıyoruz
carp(4, 5) # Argümanlarla birlikte çağırıyoruz

📌 Değer Döndürme (return Anahtar Kelimesi)

Birçok fonksiyon, bir işlem yaptıktan sonra bir sonuç üretir ve bu sonucu fonksiyonu çağıran yere "geri döndürür". Bu işlem return anahtar kelimesi ile yapılır.

  • return ifadesi, fonksiyonun çalışmasını sonlandırır ve belirtilen değeri fonksiyonun çağrıldığı yere gönderir.
  • Bir fonksiyon return ifadesi içermiyorsa, otomatik olarak None değerini döndürür.
  • Bir fonksiyondan birden fazla değer döndürmek isterseniz, bunları bir tuple (demet) olarak döndürebilirsiniz.

📝 Örnek:

def kare_al(sayi):
    return sayi * sayi # Karenin sonucunu döndürür

def bolme_yap(bolunen, bolen):
    if bolen == 0:
        return "Bölen sıfır olamaz!"
    return bolunen / bolen

sonuc1 = kare_al(7) # Fonksiyonun döndürdüğü değeri 'sonuc1' değişkenine atıyoruz
print(sonuc1) # Çıktı: 49

sonuc2 = bolme_yap(10, 2)
print(sonuc2) # Çıktı: 5.0

hata_mesaji = bolme_yap(10, 0)
print(hata_mesaji) # Çıktı: Bölen sıfır olamaz!

💡 İpucu: Bir fonksiyonun print() yapması ile return yapması farklıdır. print() sadece değeri ekrana basar, return ise o değeri başka bir yerde kullanılmak üzere geri verir.

📌 Varsayılan Parametre Değerleri

Bazı durumlarda, bir parametreye varsayılan bir değer atamak isteyebilirsiniz. Bu, fonksiyon çağrılırken o parametre için bir değer verilmezse, varsayılan değerin kullanılmasını sağlar.

  • Varsayılan değer atanan parametreler, fonksiyon tanımında her zaman en sonda yer almalıdır.
  • Eğer fonksiyon çağrılırken varsayılan değere sahip bir parametreye değer verilirse, yeni değer varsayılan değeri geçersiz kılar.

📝 Örnek:

def karsilama(isim="Misafir", dil="Türkçe"):
    if dil == "Türkçe":
        print(f"Merhaba {isim}!")
    elif dil == "İngilizce":
        print(f"Hello {isim}!")
    else:
        print(f"Bilinmeyen dil için {isim}!")

karsilama() # Çıktı: Merhaba Misafir! (Varsayılan değerler kullanılır)
karsilama("Ali") # Çıktı: Merhaba Ali! (isim değişir, dil varsayılan kalır)
karsilama(isim="Veli", dil="İngilizce") # Çıktı: Hello Veli! (Her ikisi de değişir)
karsilama(dil="İngilizce") # Çıktı: Hello Misafir! (dil değişir, isim varsayılan kalır)

⚠️ Dikkat: Varsayılan parametreler, parametre listesinin sonunda tanımlanmalıdır. Örneğin, def f(a, b=0, c): hatalıdır. Doğrusu def f(a, c, b=0): veya def f(a, b=0, c=0): olmalıdır.

📌 Fonksiyonların Kapsamı (Scope) - Yerel ve Küresel Değişkenler

Değişkenlerin programın hangi kısımlarından erişilebileceğini belirten kurala "kapsam" (scope) denir.

  • Yerel (Local) Değişkenler: Bir fonksiyonun içinde tanımlanan değişkenlerdir. Sadece o fonksiyonun içinden erişilebilirler ve fonksiyonun çalışması bittiğinde yok olurlar.
  • Küresel (Global) Değişkenler: Fonksiyonların dışında, ana programda tanımlanan değişkenlerdir. Programın herhangi bir yerinden (fonksiyonların içinden de) okunabilirler. Ancak bir fonksiyonun içinden küresel bir değişkeni değiştirmek için global anahtar kelimesi kullanılması gerekir.

📝 Örnek:

global_mesaj = "Ben küresel bir mesajım." # Küresel değişken

def benim_fonksiyonum():
    local_mesaj = "Ben yerel bir mesajım." # Yerel değişken
    print(local_mesaj)
    print(global_mesaj) # Küresel değişkene erişilebilir

benim_fonksiyonum()
print(global_mesaj) # Küresel değişkene erişilebilir
# print(local_mesaj) # Hata verir: 'local_mesaj' tanımlı değil (fonksiyon dışında erişilemez)

💡 İpucu: Genel olarak, fonksiyonların kendi içlerinde tanımladıkları yerel değişkenlerle çalışması ve küresel değişkenlere doğrudan müdahale etmekten kaçınması daha iyi bir programlama pratiğidir. Bu, kodunuzu daha güvenli ve hata ayıklamayı kolaylaştırır.

↩️ Testi Çözmeye Devam Et
✨ Konuları Gir, Yapay Zeka Saniyeler İçinde Sınavını Üretsin!
1 2 3 4 5 6 7 8 9 10
Ana Konuya Dön:
Geri Dön