Python İle Fonksiyon Oluşturmanın Püf Noktaları

Bu dersimizde, Python’da önemli bir yeri olan fonksiyonları ve sahip olduğu özellikler hakkında detaylı bir bilgi vereceğiz. İlk olarak programlamada fonksiyonun ne olduğuna dair genel bir bilgi verelim ve Python’da fonksiyon ifadelerinin nasıl kullanıldığını detaylarıyla derleyelim.

Programlamada Fonksiyon Nedir?

Fonksiyon, matematikte değişken sayıları girdi olarak kabul edip bunlardan bir çıktı sayısı oluşmasını sağlayan kurallar bütünüdür desek yeridir.

Programlamada da benzer şekilde, belirli bir görevi yerine getirmesi için kullanılan bağımsız kod bloglarıdır diyebiliriz. Zira, girdi olarak parametreler alabilir ve bu girdilere bağlı olarak bir sonuç döndürebilir. Bakınız: “girdi – fonksiyon – çıktı

Tıpkı gündelik yaşamımızda daha büyük bir görevi yerine getirmek için onları daha küçük, daha yönetilebilir görevlere böldüğümüz gibi programlamada da fonksiyonları benzer bir mantıkta kullanmaktayız.

“Peki, programlamada fonksiyon kavramı niye bu kadar önemli?” Önemli, çünkü programı daha düzenli, anlaşılabilir ve yönetilebilir kılar, hata ayıklamayı kolaylaştırdığı gibi kodun bakımını ve tekrar kullanılabilirliğini sağlar.

Kod bloklarını bağımsız modüller halinde düzenleyerek, belirli görevleri yerine getirmesi için oluşturulmuş bağımsız kod bloklarına dönüştürür. Bu, bir yandan kodun daha anlaşılabilir ve yönetilebilir olmasını sağlarken, diğer yandan da belirli bir işlevi gerçekleştiren fonksiyonların, başka programlarda da kullanılabilmesine olanak tanır. Bu nedenlerle, fonksiyonlar programlamada büyük bir öneme sahiptir.

Python’da Fonksiyonların Kullanımı

C, C++, Java, C# gibi diğer programlama dillerine hakim olanlar, Python‘da da fonksiyonların kullanım mantığına da aşina olacaklardır. En basitinden “print ()“, “type ()” gibi ifadeleri kullanmışsanız fonksiyonlardan yararlanmışsınızdır diyebiliriz.

Python’da gömülü (built-in) halde bulunan bu yapılar aslında fonksiyonların kullanım mantığı hakkında ipuçları verirler. Zira buna benzer yapılar Python geliştiricileri tarafından önceden tanımlanıp dile gömülü halde hizmetimize sunulmuş fonksiyonlardır.

Nasıl ki, karmaşık işlemleri gömülü fonksiyonlar ile kolayca yapabiliyorsak programlamacı olarak bizler de kendi sorunlarımıza çözüm bulmak adına kendi fonksiyonlarımızı tanımlayıp kullanabiliriz.

Python’da bir fonksiyonu tanımlamak için def anahtar kelimesi kullanılır. Bu kelime, İngilizcedeki “define” (tanımlamak) kelimesinden türetilmiştir ve Python yorumlayıcısına bir fonksiyon tanımı yapıldığını belirtir.

Sıra geldi Python’da bir fonksiyon tanımladığımızda bilmemiz gereken diğer fonksiyon elemanlarına. Başlayalım:

Python Fonksiyon Elemanları

Python’da bir fonksiyonun tanımı aşağıdakileri içerir:

  1. Fonksiyon Adı: Bu, fonksiyonunuzun adıdır ve fonksiyonunuzu çağırırken kullanılır. İyi bir uygulama, fonksiyon adının, fonksiyonun ne yaptığını açıkça belirtmelidir. Örneğin, bir sayının faktöriyelini hesaplayan bir fonksiyon için uygun bir ad faktoriyel_hesapla olabilir.
  2. Parametreler: Bunlar, fonksiyonun alacağı girdilerdir. Fonksiyon tanımında parantez içinde listelenirler ve virgülle ayrılırlar. Fonksiyonun gövdesinde bu parametreler, normal değişkenler gibi kullanılır.
  3. Fonksiyonun Gövdesi: Bu, fonksiyonun gerçekleştireceği işlemleri içerir. Python’da, fonksiyonun gövdesi girintili (indentation) olmalıdır, yani fonksiyon gövdesindeki her satır, def satırından daha fazla boşluk veya sekme içermelidir.
  4. Return Değeri: Bu, fonksiyonun döndürdüğü değerdir. return anahtar kelimesi kullanılarak belirtilir. Bir fonksiyon, herhangi bir değer döndürmeyebilir (bu durumda, fonksiyon None döndürür), bir değer döndürebilir, veya birden fazla değer döndürebilir (bu durumda, değerler bir tuple içinde döndürülür).

Bu elemanlar, bir Python fonksiyonunun temel bileşenleridir ve bir fonksiyon tanımlarken düşünülmesi gereken ana noktalardır. Basit bir toplama işlemi üzerinden inceleyelim:

def topla(a, b):  # 'topla' adında bir fonksiyon tanımlanıyor ve bu fonksiyon 'a' ve 'b' adında iki parametre alıyor.
    sonuc = a + b  # Fonksiyonun gövdesi. 'a' ve 'b' parametrelerinin toplamı 'sonuc' adlı değişkene atanıyor.
    return sonuc  # 'sonuc' değişkeninin değeri döndürülüyor.

toplam = topla(3, 4)  # 'topla' fonksiyonu çağrılıyor ve döndürülen değer 'toplam' adlı değişkene atanıyor.
print(toplam)  # 'toplam' değişkeninin değeri yazdırılıyor.
Python Fonksiyon elemanları (def)
Python Fonksiyon Elemanları

Python Fonksiyon Tanımlama

Python’da fonksiyon tanımlarken def komutu kullanılmaktadır. Aşağıdaki örneği inceleyin:

#fonksiyon tanımlama
def selamla(isim):
    """
    Bu fonksiyon verilen isme selam verir.
    """
    print("Merhaba, " + isim + "!")

Bu örnekte, selamla adında bir fonksiyon tanımlanmıştır. Bu fonksiyon, bir isim parametresi alır ve ekrana bir selam mesajı yazdırır. def anahtar kelimesi, yeni bir fonksiyon tanımlamak için kullanılır. Bu fonksiyonun gövdesi, fonksiyonun yapacağı işlemleri içerir. Bu örnekte, gövde sadece bir print ifadesinden oluşur. Ayrıca, fonksiyonun ne yaptığına dair bir açıklama içeren bir docstring de eklenmiştir.

Yukarıdaki örnekte de fark edileceği üzere fonksiyonumuzu tanımlamak için kullandığımız “def” komutundan sonra fonksiyonun adına yer verilir. Bu ad programcının kendi insiyatifine bırakılmıştır.

Fonksiyonumuzu “def” ile tanımlayıp gerekli adlandırmaya yaptıktan sonra da parantez açılır ve varsa parametre olarak bilinen veriler yazılır ve parantez kapatılır. Ardından çift nokta koyularak fonksiyon çağrıldığında çalışması istenen kodlar yazılmaya başlanır. Kod bloğu girintili (Indentation) bir şekilde yazılır.

Python’da kodlar, yukarıdan aşağıya doğru lineer bir şekilde okunur. Bu, en üstteki kodun solundan sağa ve ardından aşağıya doğru işlendiği anlamına gelir. Fonksiyonlarla ilgili önemli bir nokta, fonksiyonların çağrılmadıkça çalıştırılmayacağıdır. Yani, bir fonksiyon tanımlansa bile, çağrılmadıkça çalıştırılmaz.

Python Fonksiyon Çağırmak

Fonksiyon tanımlandıktan sonra, onu çağırmak için fonksiyon adını ve parantez içinde uygun bir argümanı yazmanız gerekir. Örneğin, selamla("Python") şeklinde bir fonksiyon çağrısı yaparsanız, çıktı “Merhaba, Python!” olacaktır. Bakınız:

#fonksiyon tanımlama
def selamla(isim):
    """
    Bu fonksiyon verilen isme selam verir.
    """
    print("Merhaba, " + isim + "!")


# Fonksiyon çağırma
selamla("Python");

Python’da Fonksiyon Parametreleri Kullanımı

Fonksiyonlar, dışarıdan değer alabilirler, işte bu değerlere parametre denir. Parametreler, fonksiyonun işleyişini değiştirebilen değişkenlerdir. Fonksiyon tanımlanırken, fonksiyonun adından sonra parantez içinde belirtilirler. Parantez içindeki parametreler virgülle ayrılmak şartıyla istenilen sayıda kullanılabilmektedir. Aşağıdaki örneği inceleyiniz:

#fonksiyon parametresi
def selamla(isim):
    print("Merhaba, " + isim + "!")

Yukarıdaki selamla fonksiyonu, bir isim parametresi alır. Fonksiyon çağrılırken, bu parametreye bir değer verilir. Örneğin, selamla("Python") şeklinde çağrılmış bir fonksiyonun içinde argüman fonksiyona parametre olarak girer.

Yukarıdaki örnekte de görüleceği üzere fonksiyon içerisine tek bir parametre girilmiştir. Belirtmek gerekir ki fonksiyon çağrılırken kaç sayıda parametre belirtilmişse o sayıda olması beklenir ve sıralı bir şekilde eşleşir. Örneğin, eğer bir fonksiyon üç parametre ile oluşturulduysa, çağırırken de ne eksik ne de fazla yine üç parametre ile çağrılmaktadır. Bakınız:

#Parametre
def fonksiyon (ad, soyad):
  print("Adınız: " + ad + ", Soyadınız: " + soyad)

fonksiyon("Brad", "Pitt")

Yukarıdaki örnekte, eğer fonksiyon çağrısı ikiden farklı sayıda argüman alsaydı, parametre sayısı ile eşleşmeyecek ve derleyici hata verecekti.

❗ Fonksiyon çağrılarında kullanılan değişenlere argüman denirken, fonksiyon tanımlarında kullanılan değişkenlere ise parametre denir. İkisi de temelde aynı şeydir, sadece kullanıldığı yer farklıdır ve aralarındaki farkı bilmek önemlidir.

  • Fonksiyon tanımlamasında, fonksiyonun alacağı değerlerin isimleri belirtilir ve bunlara “parametre” denir.
  • Fonksiyon çağrısında ise, bu parametrelere gerçek değerler atanır ve bu değerlere “argüman” denir.
def selamla(isim):  # 'isim' burada bir parametredir
    print("Merhaba, " + isim + "!")

selamla("Python")  # 'Python' burada bir argümandır

Değişken Sayıda Parametre Alabilen Fonksiyonlar

Eğer fonksiyonun kaç parametre alacağı ile alakalı kesin bir bilgi yoksa parametre adından önce bir * eklemek kafi olacaktır. Bu şekilde fonksiyon bir dizi argüman alacak ve değişkenlere erişebilecektir:

# * işareti
def fonksiyon(*diller):
  print("En kolay dil: " + diller [2])

fonksiyon("C++", "C", "Python")

Fonksiyonlarda Parametre Anahtarları Kullanmak

Parametreler, anahtar (key) = değer (value) şeklinde bir yapı ile pekala gönderilebilir. Böylesi durumlarda haliyle parametre sırası önemsiz olmaktadır. Bakınız:

# parametre eşleme
def fonksiyon(dil3, dil2, dil1):
  print("En kolaay dil: " + dil3)

fonksiyon(dil1 = "C++", dil2 = "C", dil3 = "Python")

Varsayılan Parametre Değeri Belirtmek

Python fonksiyon için parametre kullanılmadığı zaman geçerli olacak bir başlangıç parametre değeri belirtilebilir. Örneğin:

# Başlangıç parametresi
def programlama (dil  = "Python"):
  print("Programlama Dili: " + dil)

programlama("C++")
programlama("C")
programlama()
programlama("C#")

Python Fonksiyonlarda “return” Kullanımı

Python’da return ifadesi, bir fonksiyonun sonucunu döndürmek için kullanılır. Bir fonksiyon, belirli bir işlemin sonucunu döndürmek için return anahtar kelimesini kullanır. Fonksiyonun işlemi tamamlandığında, return ifadesi sonrasında belirtilen değer fonksiyonun çağrıldığı yere geri gönderilir. Bilmeniz gereken özellikleri aşağıda özetlenmiştir:

  • return ifadesi kullanılmadan bir fonksiyon tanımlanırsa, o fonksiyon None döndürür.
  • return deyiminin kullandığı satırdan sonra gelen hiçbir kod çalışmaz.
  • return deyimi ile döndürülmüş bir fonksiyon başka bir değişkene atanabilir.

Peki, Python’da bir fonksiyon içinde herhangi bir veriyi ekrana basmak yerine return deyimi yardımıyla döndürülmesinin ne gibi faydası var diye sorabilirsiniz. Aslında kısaca döndürülen değerin daha sonra başka ortamlarda da kullanabilmesi şeklinde özetleyebiliriz. Bu da haliyle fonksiyonların tekrar tekrar kullanılabilmesini sağlar.

#Python'da return kullanımı
def karesini_al(x):
    return x * x

sayi1 = 5
sayi2 = 10

# karesini_al fonksiyonunu tekrar tekrar kullanma
karesi1 = karesini_al(sayi1)
karesi2 = karesini_al(sayi2)

print("5'in karesi:", karesi1)
print("10'un karesi:", karesi2)

Yukarıdaki örnekte, karesini_al fonksiyonu, verilen bir sayının karesini döndürür. Bu fonksiyon, sayi1 ve sayi2 için tekrar tekrar kullanılır. Eğer fonksiyon, karenin sonucunu sadece yazdırsaydı, bu sonuç başka yerlerde kullanılamazdı. Ancak return ifadesi sayesinde, fonksiyonun sonucu bir değişkene atanabilir ve bu değişken başka yerlerde de kullanılabilir. Bu, kodun daha düzenli ve yeniden kullanılabilir olmasını sağlar.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu