İleri Düzey Fonksiyonlar | Bölüm 1

Bu yazıyı daha iyi anlamanız adına Fonksiyonlar ve return isimli blogları okumanız gereklidir. Bu bloglar içerisinde fonksiyonların temelini ve return ifadesinin ne işe yaradığını anlattım. 

Normal şartlarda bir fonksiyonu aşağıdaki gibi tanımlayıp çağırıyoruz:

Bunu biliyorsunuz. Ancak biz, fonksiyonu bir değişkene atayabiliyor ve sadece o değişkeni çağırarak fonksiyonun çalışmasını sağlayabiliyoruz. Görelim.

Gördüğünüz üzere selamla() fonksiyonunu selamlaFonksiyonu isimli bir değişkene atadım ve sonrasında bu fonksiyonu çalıştırmak için print(selamla()) demek yerine print(selamlaFonksiyonu) demem yeterli oldu.

Bu noktada çıktı kısmına bakarsanız Selam kelimesinin ekrana verildiğini, buna ek olarak None değerinin döndüğünü görüyoruz. Bunun sebebini blogun başında linkini verdiğim return blogunu okuyarak öğrenebilirsiniz.

Bu sorunu aşmak adına print("Selam") demek yerine return "Selam" diyebiliriz.

Bu sayede fonksiyon her durumda işlevini yerine getirecektir ama return ile değer döndürmek her zaman daha sağlıklı olacaktır.

Ayrıca hatırlarsanız fonksiyonlara argüman da verebiliyorduk:

def selamla(isim) diyerek selamla() fonksiyonuna bir argüman vermiş oldum. Bu noktada fonksiyonu çağırırken verdiğim bu argümanın karşılığını da fonksiyona vermem gerekiyor. Yani print(selamla()) dediğiniz zaman isim argümanının alabileceği bir değer vermeniz gerekiyor. Ben Cyber Worm ismini verdim ama siz de dilediğiniz bir isim verebilirsiniz.

Ancak, fonksiyonu bir değişkene atadığınız zaman fonksiyonun istediği argüman değerini değişkene veremezsiniz. Ne demek istiyorum?

print(selamlaFonksiyonu("Cyber Worm")) derseniz hata alırsınız. Unutmayın; değişkene atadığımız zaman fonksiyonun hem kendisini hem de argümanlarını atıyoruz. Dolayısıyla atadığımız değişkene değil, fonksiyonun kendisine bir argüman değeri girmemiz gerekir. Sonuç olarak bu kullanımdaki yapımız bu şekilde oluyor: selamlaFonksiyonu = selamla("Cyber Worm").

Peki, kullanıcının ismini her zaman bilemeyiz, öyle değil mi? Yani kullanıcının ismini kullanıcıdan almamız gerekebilir. Bu gibi durumlarda kullanıcıdan ismini nasıl isteyeceğimize bakalım.

Fonksiyonun içerisine girip sıradan bir girdi alma işlemi uyguluyorum. Ayrıca dikkat ederseniz selamla() fonksiyonunu çağırırken içerisine herhangi bir değer girmedim. Çünkü zaten bunu kullanıcıdan alacağım. Çıktı kısmına baktığınızda göreceksiniz ki; bana Adınız: tarzında soru sordu, ben de Cyber Worm dedim. Bunun sonucunda Selam Cyber Worm çıktısı önümüze düştü.

Peki, bu yöntemleri de bildiğinizi varsayıyorum ve sizi, ilkellikten çıkmaya davet ediyorum. Kullanıcıdan girdi almanın başka bir yoluna bakalım.

Bu kullanım ile, selamla() fonksiyonunun içerisine verdiğimiz isim argümanının kullanıcıdan alınacağını söylemiş olduk. selamla(isim) demek yerine selamla(isim=input("Adınız: ")) demiş olduk ve kullanıcıdan girdi alma işlemimiz oldukça başarılı bir şekilde sonuçlandı.

Bir başka yöntemimiz daha mevcut. Hemen ona da bakalım.

Aynı şeyi fonksiyonu çağırırken yaptık. selamla(isim) diyerek selamla() fonksiyonuna bir argüman verdik. Sonrasında bu fonksiyonu çağırırken aslında şunu demiş olduk: "selamla() fonksiyonundaki isim argümanını kullanıcıdan alacaksın".

Eğer isterseniz varsayılan olarak bir değer de verebilirsiniz. Ne demek istiyorum?

Direkt olarak argüman tanımlarken o argümana bir değer verirseniz, verdiğiniz değer varsayılan olarak kaydedilir ve döndürülür.

Bu konularla alakalı bir örnek yapalım. Örneğin dairenin alanını hesaplayalım ama önce ilkel yöntemlerle yapalım.

Fonksiyonun ismi selamla() olarak kalmış, kusura bakmayın :). Önce pi sayısını belirledik ve r değerini kullanıcıdan istedik. Sonrasında formülün sonucunu sonuc isimli bir değişkene atadık ve bunu return ettik. Son olarak fonksiyonu çağırdık. Her şeyiyle beraber toplamda 6 satırlık bir kod. Şimdi, aynı şeyi bu yazıda öğrendiğimiz gibi yapalım.

Kod satırı sayısı 3'e düştü ve aynı işi yapabildik.

Birinci bölüm bu kadardı. Bir sonraki bölümde görüşmek üzere.


Yayınlanma Tarihi: 2022-12-30 16:17:47

Son Düzenleme Tarihi: 2023-01-01 16:46:45