Herkese merhabalar,
Python eğitim serisinin bir önceki yazısında öncelikle for ve while döngülerini işledik. Daha sonra, çok kullanışlı ve işimize yarayacak fonksiyonlardan biri olan range() fonksiyonunu öğrendik. Bundan önceki bölüm olan Python: Bölüm 4 – Döngüler yazısını daha okumadıysanız bu linke tıklayarak ulaşabilirsiniz.
İçerik:
- Fonksiyonlara Giriş
- Fonksiyonlarda Argüman Kullanımı
- Yerel ve Global Değişkenler
- Lambda Fonksiyonları
- return Kullanımı
Bu yazımızda ise detaylı bir şekilde fonksiyonları işleyeceğiz. Hadi başlayalım!!
Fonksiyonlara Giriş:
Biz şimdiye dek karşılaştığımız print(), type() ve range() gibi örnekler sayesinde ‘fonksiyon’ denen şeyi az çok tanıdığımızı söyleyebiliriz. Şimdi ise kendimiz nasıl fonksiyon oluşturabileceğimizi göreceğiz. Fonksiyon tanımlamak Python dilinde diğer programlama dillerine göre çok daha kolay bir iştir. Hangi fonksiyonun ne döndüreceğiyle, veya argümanların tip ve sayısıyla uğraşmanıza gerek yoktur.
def :
1 2 |
def fonksiyon(): pass |
Yukarıdaki kodun hiçbir görevi olmasa da geçerli bir fonksiyon kullanımıdır.
Bir fonksiyonun tanımlamak için gerekli olan elemanları söyle sıralayabiliriz:
- def anahtar kelimesi
- Fonksiyon adı
- Parantezler
- :
- Fonksiyon gövdesi
pass : Bu anahtar sözcüğünü henüz içeriğini netleştirmediğimiz bir fonksiyon yazarken fonksiyonu tamamlamak için kullanabiliriz. Asıl fonksiyonu yazınca pass anahtar sözcüğünün görevi bitmiş olur. Yukarıdaki gibi yazdığımız kodlar None değerini döndürmesi gerekir, çünkü fonksiyonun gövdesinde sadece pass sözcüğü var.

Argümanlar:
Parantez içinde argüman girme zorunluluğu yoktur. Fakat, gerektiğinde istediğimiz sayı ve özellikte argüman tanımlayabiliriz. Fonksiyon argümanları çeşitli gruplara ayırabiliriz. Hadi şimdi bu argümanlarla örnekler yapalım.
Zorunlu Argüman Kullanımına Örnek:

Yukarıda görüldüğü gibi fonksiyonun gövdesinde verilen parametrenin yazdırılması istenmiştir. Bu sebeple argüman kullanmak zorunludur. Ayrıca, Bu fonksiyon argüman verilmeden veya birden fazla argüman verilirse hata üreteceği aşikardır. Çünkü fonksiyonumuz tek argüman beklemektedir.
Anahtar Kelimeli Argüman Kullanımına Örnek:

Argümanın anahtar kelimeyle verilmesi, özellikle çok argümanlı fonksiyonların kullanımında yazılımcıya daha esnek davranma imkanı sağlar. Argümanlar istenilen sırada verilebilir.
Varsayılan Argüman Kullanımına Örnek:

Bazen istersek fonksiyonun herhangi argümanlarına öndeğer atayabiliriz. Yukarıdaki örnekte de görüldüğü gibi eğer varsayılan argüman eklenirse ve fonksiyonun çağırılması sırasında bu varsayınlan argüman argüman listesine eklenmezse, ön atama yapılan varsayılan değer geçerli olur.
Değişken Uzunluklu Argüman Kullanımına Örnek:
Bazı durumlarda bir fonksiyona verilecek argümanların sayısı baştan net bir şekilde berlirlenemez. Böyle durumlarda değişken argüman yapısını kullanırız.
1 2 |
def fonksiyon(a,b,c,*degisken_arg): fonskiyon gövdesi |
Yıldız ile başlayan değişken uzunluklu argüman bölümü boş bırakılabilir veya farklı sayıda argüman barındırabilir.

Yerel ve Global Değişkenler:
Eğer bir değişken fonksiyonun içinde tanımlandıysa yerel bir etkiye sahiptir. Bunun anlamı, sadece o fonksiyonun içinde ve alt fonksiyonlarda etkisini sürdürür. Fonksiyonun etki alanı dışına çıkıldığında o değişken tanımsız hale gelir.
Ayrıca şunu söylemek gerekir ki alt fonksiyonda tanımlanan yerel değişken ana ve üst fonkisyonlar için tanımsızdır.

Özellikle bir fonksiyonun içindeyken üst kademede tanımlanmış bir değişkende değişiklik yapmaya kalktığımızda sorun yaşarsınız. Çünkü orada yaptığınız değişiklik, o kademede kalır ve üst kademeye aktarılmaz. Bu yüzden dikkatli davranmak gerekir.
Ancak bu durumu global değişkeler ile çözebiliriz.

Eğer bir fonksiyon içinde bir değişkenin başına global yazarsak, o değişkenin ana ve alt fonksiyonlar için tanımlandığını, yani global olarak tanımladığını belirtmiş oluruz. Bu sayede o değişkene tüm kademelerde erişebilir ve değişiklik yapabiliriz.
Yukarıdaki örenekte görüldüğü gibi a1 ve a2 değişkenini global olarak tanımladık. Bu yüzden a1 ve a2’yi global olarak tanımlamadan önce hata alacağımızı bildiğimiz satırları artık yorum satırı olarak belitmemize gerek yok. Buradan a1 ve a2 değişkenlerine artık her yerden erişebilceğimiz anlamını çıkarabiliriz.
Lambda Fonksiyonları:
def anahtar kelimesinin kullanılmadığı bazı küçük boyutlu fonksiyonlara anonim fonksiyonlar denir. Bu tür fonksiyonlar tanımlanırken lamba anahtar sözcüğü kullanılır.
Lambda fonksiyonları sadece kendi argüman listesindeki elemanları kullanır, yani yerel ve global değişkenlere ulaşamaz. Kısa bir fonksiyon oluşturacaksak lambda fonksiyonlarına başvururuz. Bunları, tek satırlık fonksiyon olarak düşünebiliriz.
Hadi şimdi ‘a’ argümanına 10 ekleyip ve sonucu döndüren bir lambda fonksiyonu yazalım:

Örnekte de görüldüğü gibi tek satır ile fonksiyon oluşturmuş olduk.
return Kullanımı:
return ifadesi fonksiyonun işlemi bittikten sonra çağrıldığı yere değer döndürmesi anlamı taşır. Böylelikle, fonksiyonda aldığımız değeri bir değişkende depolayabilir ve değeri programın başka yerlerinde kullanabiliriz. Diğer bir ifadeyle, return anahtar kelimesi bir değer, nesne döndürmek ve aynı zamanda o fonksiyonun çağrısını sonlandırmak anlamına gelir.

Yukarıda return kullamına air bir örnek yapılmıştır. Her iki fonksiyon da aynı şekilde çalışır ve aynı değerleri döndürür. return yardımıyla fonksiyonlar değerleri çağrıldığı yere döndürebilir ve biz de bu değerleri istediğimiz yerde kullanabiliriz.
Bu bölümde Python programlama dilinde fonksiyonları gördük. Umarım beğenmişsinizdir. Vakit ayırıp okuduğunuz için teşekkür ederim.
Bu bölümde yazdığımız kodlara erişmek için bu linke, python programlama eğitim serimiz boyunca yazdığımız tüm kodlara erişmek için bu linke tıklamanız yeterlidir.
Kaynaklar:
- https://erdincuzun.com/python/08-fonksiyonlar/
- https://www.yazilimbilimi.org/python-fonksiyonlarda-return/
- https://www.w3schools.com/python/python_lambda.asp