1393

Python ile Sıfırdan İleri Seviye Python Programlama

Python Fonksiyon Parametreleri

Python fonksiyonlarında default parametreler, değişken sayıda parametre gönderimi ve key-value parametre gönderimlerini öğreniyoruz.



Fonksiyona Parametre Gönderme

Fonksiyonlara dışarıdan bilgi gönderip fonksiyon içerisinde kullanabiliriz.

Örnek

def hello(name): 
    print("Merhaba "+ name) 

hello("Arda") # Merhaba Arda

Örnekte olduğu gibi dışarıdan name parametresini fonksiyona gönderip kullanabiliriz.

Örnek

def yazdir(ad,soyad,yas):
    return f"ad: {ad} soyad: {soyad} yaş: {yas}"

sonuc = yazdir("ali","aksoy",20)

yazdir() fonksiyonuna gönderdiğimiz parametrelerin sırası önemlidir. Eğer ki parametreleri yanlış sırada gönderirsek istemediğimiz bir sonuç alırız.

Dolayısıyla parametre isimlerini belirterek fonksiyona bilgi gönderebiliriz bu durumda parametre sırasına uymak zorunda kalmayız.

sonuc = yazdir(soyad="aksoy",ad="ali",yas=20)

Bu durumda gene aynı sonucu alırız çünkü parametreleri key, value şeklinde gönderiyoruz.

Fonksiyonlarda Default Parametreler

Bazen fonksiyonlara gönderdiğimiz parametreler yerine varsayılan değerleri kullanmak isteyebiliriz.

Örnek

def my_function(country = "Turkey"):
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

country parametresinin varsayılan değeri Turkey' dir. Dolayısıyla fonksiyona bir parametre göndermediğimiz durumda Turkey geçerli olacaktır diğer durumlarda gönderilen parametre geçirli olur.

Değişken Sayıda Parametre Gönderme

Kendisine gönderilen değişken sayıdaki sayıları toplayan bir fonksiyon yazmak istediğimizde *params keyword' üni kullanabiliriz.

Örnek

def toplama(a,b):
    return a+b

Bu şekilde 2 sayıyı toplayabiliriz ya da 3 sayı istiyorsak 3 parametre bekleriz ?

def toplama(a,b,c):
    return a+b+c

Peki 4,5,6 ...?

Bu durumda *params ile parametre tanımlamasını aşağıdaki gibi yapabiliriz.

Örnek

def toplama(*params):   
    print(type(params))  # <class 'tuple'>
    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))

Gördüğünüz gibi istediğiniz sayıda parametre gönderin sorun değil gelen her parametre bir tuple listesi içine alınıp fonksiyona gönderilir ve bu tuple listesi üzerinde for döngüsü ile dolaşıp gönderilen her değeri alıp toplayabiliriz.

Fonksiyona Key-Value Bilgisi Gönderme

Eğer ki **args şeklinde parametre belirtirsek bu durumda key-value şeklinde istediğimiz sayıda bilgiyi fonksiyona gönderebiliriz.

Örnek

def displayUser(**args):
    print(type(args))  # <class 'dict'>
    for key, value in args.items():
        print('{} is {}'.format(key,value))

displayUser(name= 'Çınar', age = 2, city = 'istanbul')
displayUser(name= 'Ada', age = 12, city = 'kocaeli', phone = '123132')
displayUser(name= 'Yiğit', age = 14, city = 'ankara', phone = '123132', email= 'yigit@gmail.com')

Bu durumda bir kullanıcının istediğimiz kadar özelliğini fonksiyona key-value şeklinde gönderebiliriz ve gönderdiğimiz farklı sayıdaki bilgiyi for döngüsü ile ekrana yazdırabiliyoruz. Gelen veri tipinin <class 'dict'> yani dictionary olduğuna dikkat ediniz.

Ekran çıktısı;

<class 'dict'>
name is Çınar
age is 2
city is istanbul

<class 'dict'>
name is Ada
age is 12
city is kocaeli
phone is 123132

<class 'dict'>
name is Yiğit
age is 14
city is ankara
phone is 123132
email is yigit@gmail.com

Örnek

def myFunc(a, b, c, *args, **kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)

myFunc(10, 20, 30, 40, 50, 60, 70, key1 = 'value 1', key2 = 'value 2')

Ekran çıktısı;

10
20
30
(40, 50, 60, 70)
{'key1': 'value 1', 'key2': 'value 2'}

Burada ise ilk 3 parametre sırasıyla a,b ve c yerine geçer. Sonraki 4 bilgi (40,50,60,70) bir tuple bilgisi olur ve en sondaki key-value bilgisi ise dictionary veri tipinde alınır.

Örnek

Kendine gönderilen sınırsız sayıdaki parametreyi bir listeye çeviren fonksiyonu yazınız.

def listeyeCevir(*params):
    liste = []

    for param in params:
         liste.append(param)
    return liste

result = listeyeCevir(10,20,30,'Merhaba')
print(result)