Python’da Fonksiyonlar
“def” İle Tanımlanan Fonksiyonlar
Bu yazıda sizlere Python’da fonksiyonlardan bahsedeceğim. Fonksiyonların kullanımları matematikte bildiğimiz fonksiyonlar gibi olup, bir fonksiyon tanımlandıktan sonra içerisine bir girdi yazarız. Ardından fonksiyon bu girdiye göre bize bir çıktı verir.
Örnek olarak f(x) = 2x + 1 fonksiyonunu düşünürsek, x = 5 için fonksiyon çıktı olarak f(5) = 11 değerini bize verir. Python’da da fonksiyonlar, bir girdi alan (zorunlu değil) ve bu girdiyi bazı işlemlerden geçirip sonucunu bize geri döndüren ifadelerdir. Programımız için kod yazarken bazı kodları tekrar tekrar kullanmak zorunda kalabiliriz. Bu tür durumlada aynı kodu tekrar yazmak yerine kodumuzu bir fonksiyon olarak tanımlayıp, o fonksiyonu çağırabiliriz. Bu bize çok büyük bir kolaylık sağlayacaktır. Python’da fonksiyon tanımlamak için fonksiyon ifadesinin başına ‘def’ ifadesi eklenir. Bu ifade ingilizce ‘definition’ olan tanımlama kelimesidir. Örnek bir fonksiyon tanımlayalım.
Örnek 1
INPUT:
def f(x):
print(2x+1)
f(5)
OUTPUT:
11
Yukarıdaki örnekte fonksiyonun içerisine girilen parametre için 2x+1 işlemini gerçekleştirip çıktıyı ekrana yazdıran bir fonksiyon tanımladık. Tanımladığımız fonksiyonların ekrana sonuç yazdırmasını istiyorsak print() ya da return gibi ifadeleri kullanmamız gerekir. return ifadesi döndürmek anlamına gelir. Örnek kullanımını gösterelim.
Örnek 2
INPUT:
isim = input("Lütfen bir isim giriniz : ")
def f(deger):
karsilamaMesaji = "Merhaba" + " " + deger
return karsilamaMesaji
f(isim)
OUTPUT:
Lütfen bir isim giriniz : Adil
'Merhaba Adil'
Yukarıdaki fonksiyon dışarıdan girilen ismi karşılama mesajına ekleyip sonucu bize döndürecektir. Bir başka örnek:
Örnek 3
INPUT:
isim = input("Lütfen bir isim giriniz : ")
def karsilamaMesaji(yeni_deger):
if yeni_deger.isnumeric():
sonuc = yeni_deger + " " + "bir nümerik değerdir."
return sonuc
else:
print(yeni_deger + " " + "bir nümerik değer değildir.")
karsilamaMesaji(isim)
OUTPUT:
Lütfen bir isim giriniz : Erhan
Erhan bir nümerik değer değildir.
Fonksiyonlarda kullanılan değişkenler yerel değişkenlerdir. Yani fonksiyon bloğu dışında bu değişkenlere erişilemezdir. Örnek olarak:
Örnek 4
INPUT:
def f():
y = 5
return y
print(y)
OUTPUT:
NameError: name 'y' is not defined
Burada yaptığımız örneklerin dışında fonksiyonlar birden fazla parametre almaları mümkündür. Örnek olarak:
Örnek 5
INPUT:
def f(x,y,z):
a = 2*(x**2) + 5
b = 3*(y**3) + 6
c = z + 6
return a,b,c
f(2,5,7)
OUTPUT:
(13, 381, 13)
Örnek 2’de dışarıda tanımladığımız x = 5 değişkenini fonksiyon içerisine yazdıktan sonra tekrar çağırdığımızda x’in değeri yine 5 olarak ekrana yansımıştı. Dışarıda tanımladığımız değişkenin fonksiyon içerisindeki değişiminin her yerde geçerli olması için değişkeni fonksiyon içerisinde global olarak tanımlamamız gerekir. Örnek olarak:
Örnek 6
INPUT:
x = 5
def f(x):
x += 1
return x
f(x),x
OUTPUT:
(6, 5)
INPUT:
x = 5
def f1():
global x
x += 1
return x
f1(),x
OUTPUT:
(6, 6)
Burada yaptığımız örneklerin dışında fonksiyonların birden fazla parametre almaları mümkündür. Örnek olarak:
Örnek 7
INPUT:
def f(x,y,z):
a = 2*(x**2) + 5
b = 3*(y**3) + 6
c = z + 6
return a,b,c
f(2,5,7)
OUTPUT:
(13, 381, 13)
Bunun dışında fonksiyon içinde fonksiyon tanımlamak ve bir fonksiyonun içerisinde başka bir fonksiyonun sonucunu kullanmak mümkündür. Örnek olarak:
Örnek 8
INPUT:
def fonksiyon():
x = int(input("Lütfen bir sayı giriniz: "))
a = x/2
b = x/3
def fonksiyon1():
c = a+5
d = b+5
return c,d
return print("a = {}, b = {}, c ve d = {} olarak elde edilir".format(a,b,fonksiyon1()))
fonksiyon()
OUTPUT:
Lütfen bir sayı giriniz: 6
a = 3.0, b = 2.0, c ve d = (8.0, 7.0) olarak elde edilir
Örnek 9
INPUT:
def f(a,b,c):
toplam = a+b+c
return toplam
def g(a,b,c):
ortalama = f(a,b,c)/3
return ortalama
g(3,5,4)
OUTPUT:
4.0
Buraya kadar yaptığımız örneklerin dışında birkaç örnek daha yapalım ve ardından lambda fonksiyonundan bahsedelim.
Örnek 10
Vize, final notunun girildiği ve sonuç olarak dersten geçme-kalma durumunun döndürüldüğü bir program yazınız.
INPUT:
def DersDurum(VizeNotu, FinalNotu):
ortalama = (0.4*VizeNotu) + (FinalNotu*0.6)
if ortalama >= 50:
return (ortalama, "Geçtiniz")
else:
return (ortalama, "Kaldınız")
DersDurum(45,50)
(48.0, 'Kaldınız')
OUTPUT:
(48.0, 'Kaldınız')
Örnek 11
Girilen bir sayının çift olup olmadığını tespit eden bir fonksiyon yazınız.
INPUT:
def f(z):
if z%2 ==0:
print("Girilen sayı çiftir.")
else:
print("Girilen sayı tektir.")
f(5),f(8)
OUTPUT:
Girilen sayı tektir.
Girilen sayı çiftir.
Lambda Fonksiyonu
Python’da fonksiyon tanımlamanın bir diğer yolu lambda fonksiyonunu kullanmaktır. def ile tanımlanan fonksiyondan farkı ise adsız olarak tek bir satır ile oluşturulabilen fonksiyonlar olmasıdır. Lambda fonksiyonları, birden fazla parametre alabilirken içerisinde yalnızca tek işlem yapabilirler. Bu fonksiyon, fonksiyon parametreleri döndürmek için kullanılabilir. def fonksiyonuna benzer olarak başka fonksiyonlar içerisinde de kullanılması mümkündür. Lambda fonksiyonunun kullanımı aşağıdaki gibidir:
lambda parametre(ler): işlem
Örnek 12
INPUT:
y = lambda x: x+2
print(y(2))
OUTPUT:
4
Örnek 13
INPUT:
z = lambda a,b: 2*a + 3*b +5
print(z(5,2))
OUTPUT:
21
Örnek 14
INPUT:
def islem(a,b,c):
f = lambda x,y,z : 6*x + 7*y + 8*(z**2)
sonuc = f(a,b,c) + 100
return sonuc
islem(3,5,7)
OUTPUT:
545
Bu yazımızda sizlere Python’da fonksiyonların nasıl kullanıldıkların ve fonksiyon çeşitlerinden bahsettik. Python ile ilgili yeni içeriklerimizi okumak için sitemizi takip etmeyi unutmayınız.