Python'da Fonsiyonlar (Functions)
Yazdığımız bir python uygulamasındaki belli bir kod parçasını bir kaç yerde kullanma ihtiyacı duyduğumuzda fonksiyon oluşturmak işlerimizi kolaylaştırır. Böyle durumlarda sürekli kullanacak olduğumuz kod satırlarını fonksiyonlar içine alıp istediğimiz zaman çağırıp çalıştırabiliriz.
Şimdiye dek karşılaştığımız print(), len(), type() ve open() gibi örnekler sayesinde fonksiyon'u az çok tanıdık.
Kısaca Fonksiyonlar;
- Her biri bellirli bir işi yerine getiriyor.
- Parametre alan fonksiyon var almayan fonksiyon olmak üzere iki ayırabiliriz.
- Parametre alan fonksiyon var almayan fonksiyon olmak üzere iki ayırabiliriz.
- Fonksiyonların görevi, karmaşık işlemleri bir araya toplayarak, bu işlemleri tek adımda yapmamızı sağlamaktır.
- Fonksiyonları kullanarak, bir veya birkaç adımdan oluşan işlemleri tek bir isim altında toplayabiliriz.
Peki sizlerle fonksiyon iş akışını görelim...
ve gelip bunu koda döküp ilk fonsiyonumuzu oluşturalım...
def my_function():
print("Hello from a function")
my_function()
"Hello from a function"
peki fonksiyonumuza parametre verip bir fonksiyon oluşturalım.
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
"
Emil Refsnes
Tobias Refsnes
Linus Refsnes
"
Return Deyimi, fonksiyonun geriye herhangi bir değer döndürmesini sağlar.
def MyName(name):
return 'hello ' + name
name = MyName('Zeki')
print(name)
"hello Zeki"
Yine bir örnek daha verelim...
def toplamaIslemi(sayi1,sayi2):
return sayi1+sayi2
Toplam = toplamaIslemi(4,78)
print(f"cevap: {Toplam}")
"cevap: 82"
Şimdi fonksiyon içinde fonksiyon çağırma işlemi yapalım. Sadık Turan beyin videolarından birinde çok güzel bir örnek vardı onu yazalım.
def yasHesapla(dogumYili):
return 2019 - dogumYili
def EmekliligeKacYilKaldi(dogumYili, isim):
yas = yasHesapla(dogumYili)
emeklilik = 65 - yas
if emeklilik > 0:
print(f'{isim} emekliliğinize {emeklilik} yıl kaldı')
else:
print(f'{isim} zaten emekli oldunuz')
EmekliligeKacYilKaldi(1983, 'Ali Bey')
EmekliligeKacYilKaldi(1950, 'Ahmet Bey')
EmekliligeKacYilKaldi(1974, 'Yağmur Hanım')
"
Ali Bey emekliliğinize 29 yıl kaldı
Ahmet Bey zaten emekli oldunuz
Yağmur Hanım emekliliğinize 20 yıl kaldı
"
Örneklerimize input sayı alarak sonuç bulduğumuz bir fonksiyon örneği yapalım.
def toplama(sayi1, sayi2):
return sayi1 + sayi2
sayi1 = int(input("Birinci sayıyı girin :"))
sayi2 = int(input("İkinci sayıyı girin :"))
result = toplama(sayi1,sayi2)
print("Sonuç :", result)
Meşhur fibonnaci sayı dizisinin de örneğini verelim..
def fibonacci(sayi):
a, b = 0, 1
while b <= sayi:
print(a)
a, b = b, a + b
fibonacci(27)
"
0
1
1
2
3
5
8
13
"
Fonksiyonlarda Default Parametreler
Fonksiyonlara gönderdiğimiz parametreler yerine varsayılan değerleri kullanmak isteyebiliriz.
def my_function(country = "Turkey"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
"
I am from Sweden
I am from India
I am from Turkey
I am from Brazil
"
Fonksiyonumuza bazen çok sayıda parametre göndermek isteyebiliriz bunun için *params tanımlaması yaparsak fonksiyonumuza çoklu parametre gönderebiliriz
def my_function(*friends):
print("Onun en sevdiği arkadaşı " + friends[2])
my_function("Yigit", "Cem", "Emre")
"
Onun en sevdiği arkadaşı Emre
"
2. bir örnek verelim...
def toplama(*params):
print(type(params))
sum = 0
for n in params:
sum = sum + n
return sum
print(toplama(10, 20, 50))
print(toplama(10, 20, 30))
print(toplama(10, 20, 30,50,60,10,20))
"
80
60
200
"
Eğer ki **args şeklinde parametre belirtirsek bu durumda key-value şeklinde istediğimiz sayıda bilgiyi fonksiyona gönderebiliriz.
def displayUser(**args):
print(type(args)) # <class 'dict'>
for key, value in args.items():
print('{} is {}'.format(key, value))
displayUser(name='Zeki', age=20, city='Kars')
displayUser(name='Yigit', age=12, city='Erzincan', phone='123132')
displayUser(name='Cem', age=14, city='Amasya', phone='123132', email='cemerol@gmail.com')
"
<class 'dict'>
name is Zeki
age is 20
city is Kars
<class 'dict'>
name is Yigit
age is 12
city is Erzincan
phone is 123132
<class 'dict'>
name is Cem
age is 14
city is Amasya
phone is 123132
email is cemerol@gmail.com
"
Son olarak zor ve güzel bir uygulama yapalım. Hem standart sapma hem ortalama hesaplamayı bulalım.
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))
print("Ortalama Hesaplama:", ortHesapla(liste))
"
Standart Sapma: 11.249489784348588
Ortalama Hesaplama: 21.857142857142858
"
Kaynakça:
www.w3schools.com
sadıkturan.com
caylakyazilimci.com
veridefteri.com
0 Yorumlar