ProgramlamaPython

Python Fonksiyonlar

Fonksiyonlar başkaları tarafından veya dil geliştiricileri tarafından veya bizzat bizim tarafımızdan daha hızlı işlemler yapma amacıyla kullanılan yapılardır. Örneğin biz bir çok örnekte print() fonksiyonunu kullanarak ekrana yazdırma işlemi yaptık. Eğer bu fonksiyon olmasa idi bu sefer ekrana yazdırma işlemi için çeşitli kodlar yazacak veya yeni yöntemler geliştirerek bu işlemi daha basit hale getirmeye çalışacaktık.

İşte yukarıda bahsettiğimizi bir tanım haline getirirsek fonksiyonlar daha önce yazılmış araçlardır. Dil geliştiricileri tarafından oluşturulduğu gibi (gömülü fonksiyonlar) harici geliştiriciler tarafından da oluşturulabilir veya siz projenize yönelik fonksiyonlar geliştirebilirsiniz.
Fonksiyonların yazım kuralı ve basitçe oluşturulması şu şekildedir;

def fonksiyonadi():
fonksiyon içinde çalıştırılacak kod

Yukarıdaki örnekte belirtilmekte olan fonksiyon için önce def kodu ile fonksiyon oluşturulacağı Python’a bildirilmiş daha sonra fonksiyon için bir isim verilmiş ve parantez aç-kapa yapılarak iki nokta üst üste işareti eklenerek fonksiyonun çağrılması durumunda çalışacak kod yazılmıştır. Dikkat ettiyseniz çağrılması diye özellikle yazdım çünkü siz fonksiyonu oluştursanız bile onu çağırmadığınız zaman o kod çalışmayacaktır. Çağırma işlemi ise fonksiyonun_adi() şeklindedir. Yukarıdaki örnekte benimFonksiyonum() yazılarak fonksiyon çalıştırılmış ve içerisindeki print() fonksiyonu çalışmıştır. Buradan da şunu anlamalıyız ki fonksiyon içerisinde başka bir fonksiyonu çalıştırabiliriz.

Fakat yukarıdaki örneğe baktıysanız dışarıdan herhangi bir değer almadan sadece içerideki kodu çalıştırıyor dolayısı ile bu durum belirli bir şartta işimizi görecek iken genel manada çok kullanışlı olmayacaktır. Fakat hemen üzülmeyin zira Python bu konuda da sizi yolda bırakmıyor ve parametre alabilen fonksiyonlar oluşturmanıza imkan sağlıyor. Mesela bir toplama işlemini bilgileri dışarıdan alacak şekilde yapalım ve bakalım nasıl bir yazım şekli oluyor ;

Örnek 2 adlı görselde görüldüğü üzere bu sefer ilk örnekteki boş açılıp kapanan parantezler arasına sayi1 ve sayi2 adlı iki bilgi girilmiştir. Bunlar değişken değil değişkeni temsil eden bilgilerdir. yani siz sayi1,sayi2 diye o fonksiyonu oluşturduğunuz kısmın hemen üstünde değişken oluştursanız bile bu ikisi arasında isim benzerliği harici hiç bir benzerlik olmayacaktır. Fonksiyon oluştururken parametre kısmına yazılan bilgiler değişkenlerle alakalı değil sadece onları temsilen geliştirici tarafından konulan bilgilerdir. herhangi bir harf de olabilir. Şimdi fonksiyonun oluşturulma şekline bakalım, def toplama(sayi1,sayi2): şeklinde başlatılan fonksiyon ile şunu anlıyoruz bu fonksiyonun çalışabilmesi için dışarıdan 2 adet veri alması gerekmektedir. Eğer parametre kullanmadan çağrılırsa o halde aşağıdaki gibi hata verecektir. Hatanın detayında ise 2 adet gerekli argüman eksik (yani sayi1 ve sayi2 eksik) hatasını vermektedir.

Şimdi parametre alabilen fonksiyonu gördük ancak dikkat ettiyseniz bu sefer dışarıdan bilgi alıyor ancak dışarıya bilgi vermiyor aslında print() fonksiyonunu yazdırmazsak dışarıya bilgi alamayacağız. Oysa bizim yapacağımız kodlar içerisinde dışarıdan farklı fonksiyonlardan bilgi alan fonksiyonlar olacağı gibi yine farklı fonksiyon veya kodlara değer gönderen fonksiyonlarda olacaktır.İşte bu gibi bir durumda return komutunu kullanırız. Return kelime manası ile Türkçe’mize dönüş olarak geçmiştir. Yani bu komut içerideki bilgiyi döndürerek dışarı aktarır. Aşağıdaki örnekte daha iyi anlayacaksınız diye umuyorum.

Örnek 4 adlı görselde görüldüğü üzere print() fonksiyonu kaldırılmış ve onu yerine return eklenmiş şimdi buradaki olayı Türkçe’ye çevirirsek söyle diyebiliriz. “toplama fonksiyonu içerisindeki sayi1 ve sayi2 değerlerini topla daha sonra sonuc’a aktar ve sonuc değişkenini döndür (fonksiyonun dışına aktar)”

Örnek 4 görselinde dikkat ettiyseniz çağrıldığında bize bir sonuç verirken biz bu sonucu başka bir değişkene de ataya biliyoruz.

Buraya kadar her şey güzel ancak mesela siz bilgileri toplayacağınız bir fonksiyon oluşturdunuz diyelim her zaman sabit bilgi olacak diye bir şart olamaz bu yüzden içerisine girilecek veri miktarı artacağı gibi azalabilirde. İşte Python bizim için bunu düşünmüş ve böyle bir saçmalık olmaz demiş ve bunun için bize şöyle bir imkan vermiş yani “argüman” anlamındaki args peki nedir bu args ? Şöyle izah edeyim. Python geliştiricileri herhangi bir sınır konulmayacak parametreler için bu tanımı geliştirmişlerdir. Fakat nasıl kullanılır şöyle bir örnek yapalım ve anlatalım ;

Yukarıdaki Örnek 5 görselinde *args kullanılarak parametre miktarı belirtilmemiş ve bu şekilde bilgiler bilgi adlı değişkene aktarılmıştır. Dikkat ettiyseniz bilgi değişkeninin veri türü tuble yani demet veri türündedir. O halde şunu anlayabiliriz *args ile fonksiyon içerisine sınırsız sayıda bilgi alabiliriz ve bu bilgilerle işlem yapabiliriz. Mesela yukarıdaki toplama işlemini birde bu şekilde yapalım;

Yukarıda ki Örnek 6 görselini açıklamak gerekirse şöyle bir işlem yapılmıştır, *toplama ile parametre sayısının belirsiz olduğu Python’a bildirilmiş ve içerisine de for ile oluşacak demet içerisindeki bilgiler tek tek ele alınarak toplama işlemi yapılmıştır. Bu işlemi biraz daha geliştirebiliriz mesela string bir değer yazımını engellemek için içerisine koşullu yapılar ekleyebiliriz ancak ben burada nasıl çalıştığını anlatmak istedim. Args ile ilgili son not olarak da dikkat ettiyseniz yukarıdaki örnekte *args olarak değil *toplama olarak yazılmıştır buradan da anlıyoruz ki args gelenekselleşmiş bir yazım şeklidir ancak isteğe göre de değiştirilebilir. Ancak genel python yazımı olarak args şeklinde yazılmıştır.

Yukarıda anlattığım args a benzer bir parametre daha vardır ki bu da kwargs parametresidir ve ** (çift yıldız) ile kullanılır. Bu parametrenin diğerinden farkı bir anahtar değer alarak eklenebilir yani isim=”Hobi” gibi bir bilgi işlenmesine imkan tanır. Kısa bir örnek yaparak konuyu kapatalım;

Örnek 7 de görüldüğü üzere **bilgi olarak eklenen kwargs isim=”Hobi” şeklinde olan değeri alarak bunu sözlük veri tipinde eklemiştir.

Şimdilik bu kadar bir sonraki yazıda görüşmek dileğiyle.

Etiketler
Daha Fazla Göster

Bir Cevap Yazın

Başa dön tuşu
Kapalı
Kapalı

Reklam Engelleyici Algılandı

Lütfen reklam engelleyiciyi devre dışı bırakarak bizi desteklemeyi düşünün