Python Fonksiyonlar ve Fonksiyon Kullanımı

Python fonksiyonlar ve fonksiyon kullanımı başlığını anlamamız, Nesne Yönelimli Programla dersimiz için önemli temel oluşturacak. Bu nedenle bu bölümü olabildiğince kapsamlı tutmaya çalışacağım.

Bu dersimizde fonksiyon tanımlama, local variable, global variable, recursion fonksiyon kavramı ve lambda fonksiyonundan bahsedeceğiz.


Python Fonksiyonlar

Kısaca Python fonksiyonlar ne için kullanılır, neden ihtiyaç duyuyoruz açıklayalım.

Her programlama dilinde olduğu gibi fonksiyonlar ve fonksiyonların gücü o programlama dilinin de gücünü ortaya koyar.

Uygulama içerisinde tekrar tekrar yaptığımız ve akış içersinde sürekli kullandığımız kod bloklarının bir arada kullanılarak bir sonuç döndürmesi veya bir işlemi yerine getirmesi için Python üzerinde fonksiyon tanımlaması yaparız. Kullanımı ve tanımlaması aşağıdaki gibidir.

def kare(sayi):
  return sayi*sayi 
print(kare(2)) # 4

Daha önceki derslerimizden hatırlarsanız Python Veri Türeleri ve Matematik İşlemleri dersimizde import math kütüphanesi ile ceil fonksiyonunu kullanmıştık.


Bu kullanımın detayı bir sonraki dersimiz olan Nesne Yönelimli Programlama da işlenecek olsa da math sınıfının ceil method ‘u tek başına tanımlansaydı bir ceil fonksiyonu tanımlayacaktık ve tanımlanma biçimi aynı olacaktı. Örneği tekrar ekliyorum.

import math

x = math.ceil(5.1)
print(x)
print(math.ceil(1 + 6.7))

Python def Örneği

Her iki örnekte de gördüğümüz gibi fonksiyon tanımlaması, Python dilinde oldukça basit ve kullanışlı.

Birçok kişiden Python def Fonksiyonu nasıl kullanılıyor sorusunu alıyorum. Aslında def bir fonksiyon değil, fonksiyon tanımlamak için kullandığımız bir ifadedir. Aşağıda kullanımını tekrar gösteriyorum.

def fonkOrnegi():
   print("def fonksiyon tanımlamak için kullanılır")

fonkOrnegi()

Nesne yönelimli programlama dersimizden sonra Flask kütüphanesi ile REST servisi yapacağız. Bu uygulama gönderdiğimiz parametreler için tcevap verecek. Burada tekrar ve tekrar yaptığımız işlem sonucun uygun formatta geri döndürülmesi oluyor. Bunu 100 adet cevap için tekrar tekrar yazmak yerine bir fonksiyon tanımlayacağız.


Python Fonksiyonlar Local Variable

Bir programlama dilinde bilinmesi gereken en önemli konuların başında değişkenlerin kullanımı ve bununla beraber local değişkenler ile global değişkenlerin davranış biçimleri gelir. Bu başlık alıntında local değişkenlerin kullanımını inceleyeceğiz.

def local_func():
    local_degisken = 1

local_func()

print(local_degisken) # Çalıştırdığımızda hata alıyoruz çünkü local_degisken, local_func

# içerisinde tanımlanmıştır. Dışarıdan erişilemez

#local_func 'ı değiştirelim

def local_func():
    local_degisken = 1
    print(local_degisken)
local_func() # Çalıştırdığımızda ekrana 1 yazacaktır
print(local_degisken) # hata almaya devam edecektir. Kural hala geçerlidir


Python Fonksiyonlar – Global Variable

Global değişkenler Python Fonksiyonlar başlığının en dikkat etmemiz gereken başlıklarından birtanesidir. Değişken kullanımına dikkat etmediğimiz durumlarda program akışında hatalara sebep olacaktır. Global değişken kullanımını görelim.

def global_func():
    print(global_degisken)

global_degisken = 2

global_func() # Çalıştırıldığında ekrana 2 yazacaktır. Ancak görüldüğü gibi fonksiyon 
# içerisinde değil dışarıda tanımlanmıştır. 

Eğer bir değişken fonksiyonun içerisinde tanımlanmamış, dışarıda tanımlanmış ise, değişken üzerinde yaptığımız değişiklikler fonksiyonu etkileyecektir. Bunun sebebi global değişken olmasıdır. Bu nedenle değişken kullanımına dikkat edilmelidir.

Python Recursion Fonksiyon

Recursion fonksiyon içerisinde kendisini çağıran fonksiyonlardır. Ne demek istiyorum biraz daha açalım. Matematik derslerinden bildiğimiz faktöriyel konusunu hepimiz hatırlıyoruz.

Faktöriyel 10 ‘u hesapladığımızda, 10.9.8.7.6.5.4.3.2.1! ‘e kadar sayırların çarpımına eşittir. Bunu fonksiyon ile kodlamak istediğimizde 1 değerine ulaşana kadar çarpıma devam etsin ve sonucunu bize döndürsün.

Aşağıdaki örnekte Recursion Fonksiyon ile her n değeri için 0 ‘a ulaşana kadar kendisine n-1 yani gönderdiğimiz sayının bir eksiğini göndererek çarpım sonucunu döndürüyor.

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(10)) # 3628800 olarak hesaplayacaktır

Python Lambda Fonksiyonu

Lambda fonksiyonu Python ‘ın özel fonksiyonudur.

Normal fonksiyonlar ile de yapabileceğimiz işlemleri tek satırda Lambda değimi ile çözebiliriz. Unutmamamız gereken nokta fonksiyonlar tekrarlanan işlemlerde kullanışlıdır. Satır içi kod bloklarında Lambda kullanımı oldukça kullanışlıdır.

carp = lambda a,b:a*b
carp(2,3) # 6

Yukarıdaki örnekte iki sayının çarpımını lambda değimi ile carp değişkenine aktarıyoruz ve artık carp değişkenini fonksiyon olarak kullanabiliyoruz. Eğer bunu normal fonksiyon ile yapmak isteseydik aşağıdaki gibi yapardık.

def carp(a,b):
   return a*b
carp(2,3) # 6 hesaplayacaktır

Python ‘da Main Fonksiyonu Kullanımı

Python Main fonksiyonu uygulama ana sayfamızda tanımlanır. Uygulama akışını başlattığımız fonksiyondur. Bu fonksiyon içerisinde ana uygulamamızı kodlar ve sonrasında çağırırız.

Python 2 Main Fonksiyonu Kullanımı

def main():
  print "Uygulama kodları"
  
if __name__== "__main__":
  main()

print "Diğer Python Kodlarıda burada çalışır"

Python 3 Main Fonksiyonu Kullanımı

Pyton 3 ‘te if __name__== “__main__“: tanımlamasına gerek yoktur, aşağıdaki kullanımda kodunuz çalışacaktır.

def main():
  print "Uygulama kodları"
  
main()

print "Diğer Python Kodlarıda burada çalışır"

Bonus: Python Fonksiyonel Programlama

Uygulama geliştirirken belli metodoloji ve yöntemlerle kod geliştiririz.

Bunlar OOP (Nesne Yönelimli Programla), Fonksiyonel Programlama olabilir. İki yöntemde kullanıldığı proje için kullanışlı olabilir.

Python Fonsiyonel Programlama tek bir Python Script içerisinde 500 ile 1000 satır kod uzunluğunda kodlanmış uygulamalar diyebiliriz.

Tekrarlanan işlevler fonksiyon olarak tanımlanır ve kod akışı içerisinde çağırılır. Büyük projelerde bu durum kod bakımını ve okunması oldukça zorlaştıracaktır.

Python Fonksiyonel Pragramlama örneğini inceleyebilirsiniz.

def blokEkle(arg):
    print(arg + " bloğu eklendi")
def mining():
    blok = []
    print("Mining başarılı olana kadar çalışacağım")
    return 1
def hesabim():
    print("Hesabınız 100 coin var")

def main():
    hesabim()
    if(mining):
      blokEkle()

main()

print ("Diğer Python Kodlarıda burada çalışır")
print("Fonksiyonel programlama içerisinde döngüde veya çalışığ tamamlanan\
       ve sonuç üreten uygulama yazabilirsiniz")

Python fonksiyonlar konusunu burada sonlandırıyorum. Bir sonraki dersimizde Nesne Yönelimli Programlama konusuna başlayacağız ve şuana kadar öğrendiğimiz tüm dersleri bir arada kullanacağız. Bu son dersimizi de tamamladıktan sonra ilk projemize başlayacağız. Bir sonraki dersimize hazır olduğunda buradan ulaşabilirsiniz (Son dersimiz hazırlık aşamasındadır).

Bunlarla Paylaş:

Kimler Neler Demiş?

avatar
  Subscribe  
Bildir