Python’da Fonksiyonlar ve Kullanımları

Fonksiyonlar, bir kez tanımlandıktan sonra birden fazla konumda yeniden kullanabilen bir yönerge bloğudur. Fonksiyonlar kodu modüler hale getirerek aynı kodun tekrar tekrar kullanılmasına izin verir. Fonksiyonları kullanmak hem işinizi hızlandırır, hem de nesne tabanlı programlamada yoğunca kullanılır. Bu yazımızda, fonksiyonları nasıl tanımlayacağımızı, nasıl ve nerde kullanacağımızı öğreneceğiz…

Python’da öntanımlı olarak gelen ve oldukça yoğun kullandığımız hali hazırda bir çok fonksiyon bulunmaktadır. Örnek verecek olursak;

  • int() # Belirtilen tipteki verinin tamsayıya (integer)’a dönüşümü İçin kullanılır
  • print() #Konsola çıktı vermek için kullanılır.
  • len() #Belirtilen çoğu verinin uzunluğunu ölçer.
  • type() #Belirtilen tipin türünü çıktı verir.

Fonksiyonların tamamı *parametre vermek için “()” içermektedir. Herhangi bir parametre içermese dahil parantez kullanımı zorunludur.

Fonksiyonlar Nasıl Tanımlanır

Python’da fonksiyon tanımlamak için uymamız gereken belli başlı sözdizimi kuralları vardır;

  • Fonksiyon blokları def anahtar sözcüğü ile başlar.
  • Ardından fonksiyon için isim tanımlaması yapılır.
  • Daha sonra parametre eklemek için parantez işareti konulur. Parametre olmasa bile parantez işareti eklenmektedir.
  • Daha sonra kod bloğumuzu açmak için (:) işaretini koyalım.
  • Böylece fonksiyonumuzun başlığını tamamlamış olduk. Tanımladığımız fonksiyon şunun gibi gözükmelidir;
def isim():

Şimdi dilerseniz herhangi bir Python dosyası oluşturup, ilk fonksiyonumuzu tanımlamaya başlayalım. Fonksiyonlara yeni girdiğimizden fonksiyonları kullanarak basit bir “Merhaba Dünya” programı oluşturacağız.

  • Fonksiyonumuza “merhaba” ismini tanımlayacağım.
def merhaba():

Böylece fonksiyonumuzun ilk başlığını oluşturmuş olduk, daha sonra blok açıp, içine print() fonksiyonundan yararlanarak “Merhaba Dünya” yazdıralım.

def merhaba():
    print("Merhaba Dünya")

Kodumuz böyle gözükecektir, dilerseniz çalıştıralım ve neler olacağını gözlemleyelim. Ekrana hiç bir şey çıktı olarak yansımayacaktır, çünkü fonksiyonlar tanımlansa bile çağrılmaya ihtiyaç duyar, bunun için kodumuzu bu şekilde güncelleyip tanımladığımız fonksiyonu çağırmamız gerekmektedir.

def merhaba():
    print("Merhaba Dünya")
merhaba()

Şimdi oluşturduğumuz programı çalıştıralım ve çıktıyı görelim.

"Merhaba Dünya"

Yarım yamalak da olsa ilk fonksiyonumuzu tanımlamış olduk. Oluşturduğumuz fonksiyonun normal bir “Merhaba Dünya” kodundan farkı önceden tanımlayıp tekrar kullanmamızdı, ayrıyeten daha bir parametre belirtmemiş olsak da *parametre verilip daha işlevli bir program oluşturabilirdik. Sonraki bölümde bunlara göz atalım ve örnekler verelim.

Şimdiye kadar herhangi bir argüman almayan parantezli bir fonksiyon tanımladık. Bu bölümde parametreleri nasıl tanımlayacağımızı ve fonksiyonları nasıl işleteceğimizi göreceğiz.

*“Parametre; (cebirde) durağan gibi görünen, ancak alacağı her yeni değer için işlevi değiştirilen cebirsel simge ya da sayı, bir denklemin katsayılarına giren nicelik. src=wikipedia” Anlamına geliyor, Programlamada ise parametre tıpkı cebirdekine benzer görevi üstlenen, oluşturduğumuz fonksiyonlara çeşitilik katan oluşumlardır.

Şimdi buraya ilk başta size oldukça anlamsız gelen bir kod parçası bırakacağım, daha sonra bu kod parçasını birlikte yorumlayarak parametre ve argümanların aklınızda kalmasını sağlayacağız.

def add_numbers (x,y,z):
   a = x+y
   b = x+z
   c = y+z
   print(a,b,c)
add_numbers(1,2,3)

Şimdi yazdığımız kodu adım adım incelemeye başlayalım;

  • “def” anahtar sözcüğünü kullanarak ilk fonksiyon bloğumuzu başlattık.
  • Fonksiyonumuza “add_numbers” ismini verdik.
  • Önceki örneklerde boş bıraktığımız parametre kutucuğuna, x,y ve z adında parametreler belirttik.
  • a” değişkeni fonksiyonun içinde tutuluyor ve x ve parametresinin toplamını tutuyor.
  • b” değişkeni fonksiyonun içinde tutuluyor ve ve parametresinin toplamını tutuyor.
  • c” değişkeni fonksiyonun içinde tutuluyor ve y ve z parametresinin toplamını tutuyor.
  • Oluşturduğumuz add_numbers fonksiyonuna (1,2,3) argümanını verdik ve böylece x,y ve z’nin yerine geçmiş oldu. Yani 1,2,3 sayısını verince Python’un yorumlayıcısı şu işlemleri bellekte yürüttü.
a = 1+2
b = 1+3
c = 2+3
  • Daha sonra print() fonksiyonunu kullanarak a b ve değişkenlerinin almış olduğu değerleri konsola bastırdık.

Ardından 3,4,5 çıktılarını alıyoruz. Problem çözme becerinizi kullanarak tıpkı Python gibi aklınızdan sonuç yürüterek bu çıktıyı kolayca bulabilirsiniz.

Parametreler, genellikle işlev tanımında değişkenler olarak tanımlanan bağımsız değişkenlerdir. Fonksiyonlara argümanlar iletilerek fonksiyon çalışırken değerler atanabilir.

Şimdi girilen sayının karesini hesaplayan, x sonucu değişkene atayan, y ve ardından onu döndüren bir program oluşturacağız.

def kare (x):
    y = x **2
sonuc = kare (3)
print(sonuc)

** operatörü Python programlama dilinde Üs Alma(Exponentiation) görevi görür.

Dilerseniz programı çalıştıralım ve ekrana basılacak olan çıktıyı gözlemleyelim.

None

Gördüğünüz üzere konsolda yaptığımız işlemle ilgili bir çıktı beklerken “None” isminde bir ifade gördük. Peki bu neden oldu? Bu tür geriye değer döndüren işlemler oluşturmak için “return” ifadesini kullanmanız gerekmektedir. Return kullanmadan fonksiyon herhangi bir değer döndüremez ve belirlenen “None” adında varsayılan değeri döndürür.

Return ifadesi fonksiyonun işlemi bittikten sonra çağrıldığı yere değer döndürmesi anlamını taşır. Böylelikle, fonksiyonda aldığımız bir değeri bir değişkende depolayabilir ve değeri programımızdaki başka yerlerde de saklayabiliriz.

Şimdi oluşturduğumuz programı “return” ifadesini baştan kullanarak yazalım ve program yazılma amacına uyuyor mu, uymuyor mu görelim.

def kare (x):
    y = x **2 return y
sonuc = kare (3)
print(sonuc)

Programın çıktısı (9) fonksiyon tarafından döndürülen tamsayıdır.

Fonksiyon Oluştururken Bize Çok Yardımcı Olacak Bir Fonksiyon: Main() Fonksiyonu

“main()” fonksiyonu kullanmak zorunda olmasak da, Python programlarını mantıksal bir şekilde yapılandırılabilir ve programın en önemli işlevlerini ayırabilir. Ayrıca nesne tabanlı programlama da da yoğun bir şekilde kullanılmaktadır. Hatta Python dilinden bağımsız çalışan yorumlayıcılar için de kodu okunaklı bir hale getirebilir.

Yine “Merhaba Dünya” örneğindeki gibi adım adım bakacağız ve detaylıca inceleyeceğiz. Şimdi birkaç bölüm önceki “Merhaba Dünya” programımıza Python’da öntanımlı olarak gelen main() fonksiyonunu tanımlayalım;

def merhaba ():
    print("Merhaba Dünya")
def main():
   print("Merhaba Mars")
   merhaba()
main()

İlk fonksiyonumuzun ismini “merhaba” koyduk ve konsola “Merhaba Dünya” çıktısı veren ilk fonksiyonumuzu tanımladık. Daha sonra ana fonksiyon olan main()’in bloğuna “Merhaba Mars” yazdırdık ve önceden tanımladığımız ama çalıştırmadığımız “merhaba” fonksiyonunu ana fonksiyona alıp orda çalıştırmasını sağladık.Merhaba Mars
Merhaba Dünya

Ana işlevde olduğumuzu gösteren “Merhaba Mars” metin dizesi ve birbirine zincirlediğimiz merhaba() fonksiyonu çalıştı.

Fonksiyonlar Hakkında Tüyolar

Eğer bir fonksiyon içinde ne kadar çok değişken tanımlasanız bile o değişkeni yalnızca bloğun içindeki fonksiyonda kullanabilirsiniz, bu sorunu aşmak için küresel değişken yani “global” anahtar sözcüğünü kullanarak tanımlama yapılmalıdır. Örnek;

def deneme():
  global x
  x = "Ayşe"
deneme()
print("Onun İsmi" + x)

Fonksiyonun içinde tanımladığımız “x” global değişkeni, ana blokda da herhangi, bir sorun çıkartmadan kullanılabildi.

Fonksiyonlara Dokümantasyonlar Ekleme

Yazdığınız programları kaliteli, anlaşılır ve kişiden bağımsız olmasını sağlayan şeylerden biri dokümantasyonlardır. Dokümantasyonlar, yazılım geliştirme sürecinde büyük bir rol oynamaktadır. Python’da fonksiyonlara dokümantasyonlar eklenebilir ve fonksiyonun dokümantasyonuna daha sonra erişilebilir. Fonksiyonlara dokümantasyon eklemek için fonksiyonun en üst kısmı kullanılır ve bu işleme docstring adı verilir. Ayrıyeten Python’daki fonksiyonlarında belgelendirmesi(docstring) bulunur. Şimdi dilerseniz halihazırda Python’da bulunan print() fonksiyonunu sorgulayalım;

print(print.__doc__)

Ardından programımızı çalıştıralım ve oluşan çıktıyı gözlemleyelim.print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.

Doküman dizilerine nesnenin __doc__ özelliği kullanılarak erişilebilir. Şimdi dilerseniz kendi tanımladığımız bir fonksiyona dokümantasyon(docstring)özelliği verelim.

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.

Dokümanlar fonksiyonun en üst kısmına, “”(Tek Satır Metin) “””(Çoklu Satır Metin) olarak bildirilirler. Şimdi kendi tanımladığımız programın dokümantasyonunu görüntüleyelim.

print(karsilama.__doc__)

Daha sonra konsola ya da belgemizin sonuna komutumuzu yazdıktan sonra çıktıyı gözlemleyelim.

Bu fonksiyon ekrana belirtilen ismi kullanarak, Selamün Aleyküm +        "str" + Günaydın yazdırır.

Yazdığımız program, belirlediğimiz işlemi yerine getirdi. Dokümantasyon oluşturmanın zorunlu olmamakla beraber birkaç kuralı vardır. Bunlar;

  • Açıklayıcıdan ziyade, daha çok kesinlik bildirmelilerdir.
  • Doküman dizisinden önce veya sonra boş satır bırakılmamalıdır.
  • Yazacağınız dokümantasyon geliştirmeye açık ise genelde üçlü parantez kullanılmalıdır.

Python Fonksiyon Örnekleri

Bu bölümde, öğrendiğimiz fonksiyonlara ait örnekler bulunmaktadır. Bu örnekler ile fonksiyonları daha da kavrayabilir, ya da kendi programınızın içinde kullanabilirsiniz;

Altı Adet Rastgele Sayı Üretme

import random
def sayı_üret(başlangıç=0, bitiş=500, adet=6):
    sayılar = set()
    while len(sayılar) < adet:
        sayılar.add(random.randrange(başlangıç, bitiş))
    return sayılar

Çarpma İşlemi

def multiplier(a, b):
    """İki veriye çarpma işlemi ve geri döndürme"""
    return a*b

sum_{i=a}^{b} f(i) Denklemini Python’daki Fonksiyon ile Çözen Program

def fntoplam(f, a, b):
    i = a
    toplam = 0
    while i<=b:
        toplam += f(i)
        i += 1
    return toplam
def f1(x):
    return 1.0/x
def f2(x):
    return 2.0**-x

Standart Sapma Hesaplama

def ortHesapla(liste):
    ort = sum(liste) / len(liste)
    return ort
def standartHesapla(liste):
    standartKarekok=[]    
    for i in range(len(liste)):
        standartKarekok.append((liste[i]-ortHesapla(liste))**2)
    standartSapma = (sum(standartKarekok)/len(liste)-1)**0.5
    return  standartSapma
liste = [22,23,20,14,32,2,40]
print("Standart Sapma:",standartHesapla(liste))
Çıktı:
Standart Sapma: 11.249489784348588

Elbette bunlara çok daha fazla örnekler verebiliriz. Bu yazımızda Python programlama dilindeki fonksiyonları ve nasıl kullanabileceğimizi inceledik.

Defterinize Yazabilirsiniz: Fonksiyonlar program içinde belirli eylemleri yürüten kod şablonlarıdır. Ayrıca kodun modüler, yeniden kullanılabilir, ve okunmasına yardımcı olmak için kullanılabilirler. Nerdeyse tüm programlama dillerinde hazır ve bizim tanımladığımız türden fonksiyonlar bulunmaktadır. Ayrıyeten OOP(Nesne Tabanlı Programlama)da oldukça sık kullanılır.

Total
0
Shares
Bir cevap yazın

E-posta hesabınız yayımlanmayacak.