Harika insanlar da hata yapar
Seçkin Üye
*args ve **kwargs Nedir?
Bu yapılar, fonksiyon kullanırken bazen dışardan alacağımız parametre sayısını bilmiyorsak veya parametre sayısı değişkenlik gösteriyorsa kullanılır. Böylelikle fonksiyonumuza dinamiklik kazandırmış oluyoruz. Hemen bir örnekle gösterelim; örneğin girilen sayıları toplayan bir fonksiyon yazalım.
Yukarıdaki fonksiyonda 2 parametre belirledik yani 2 adetten fazla değer girilirse hata verecek.
Artık dilediğiniz kadar sayı girebilirsiniz. Fonksiyon ne kadar sayı gelirse gelsin gerekli işlemleri yapacaktır. Şu şekilde de kullanabilirsiniz.
Yine program çalışacaktır. Önemli olan parametre başına (*) koymanız ama kodlarınızın daha okunabilir olması için genel bir standart olan *args şeklinde kullanmanızı tavsiye ederim.
Evet *args ne olduğunu ve nasıl kullanıldığını öğrendik peki *kwargs nedir? Ve aralarındaki fark nedir? Aynı şekilde **kwargs da kaç tane parametre kullanacağımız bilmediğimiz durumlarda kullanıyoruz ama **kwargs anahtar değer ilişkisine dayanıyor. Python'daki Dictionary yani sözlük tipinde değer oluşturuyor.
Birlikte kullanım örneği.
Bu yapılar, fonksiyon kullanırken bazen dışardan alacağımız parametre sayısını bilmiyorsak veya parametre sayısı değişkenlik gösteriyorsa kullanılır. Böylelikle fonksiyonumuza dinamiklik kazandırmış oluyoruz. Hemen bir örnekle gösterelim; örneğin girilen sayıları toplayan bir fonksiyon yazalım.
Python:
def topla(sayi1,sayi2):
print(sum([sayi1,sayi2]))
topla(5,3) #5 ve 3 ü toplayıp yazdıracak.
Yukarıdaki fonksiyonda 2 parametre belirledik yani 2 adetten fazla değer girilirse hata verecek.
Python:
def topla(*args):
print(sum(args))
topla(5,3,7)
topla(5,3,7,10,56)
Çıktı:
15
81
Artık dilediğiniz kadar sayı girebilirsiniz. Fonksiyon ne kadar sayı gelirse gelsin gerekli işlemleri yapacaktır. Şu şekilde de kullanabilirsiniz.
Python:
def topla(*sayilar):
return sum(sayilar)
print(topla(5,3,7))
print(topla(5,3,7,10,56))
Çıktı:
15
81
Yine program çalışacaktır. Önemli olan parametre başına (*) koymanız ama kodlarınızın daha okunabilir olması için genel bir standart olan *args şeklinde kullanmanızı tavsiye ederim.
Evet *args ne olduğunu ve nasıl kullanıldığını öğrendik peki *kwargs nedir? Ve aralarındaki fark nedir? Aynı şekilde **kwargs da kaç tane parametre kullanacağımız bilmediğimiz durumlarda kullanıyoruz ama **kwargs anahtar değer ilişkisine dayanıyor. Python'daki Dictionary yani sözlük tipinde değer oluşturuyor.
Python:
2
def yazdir(**kwargs):
print(kwargs)
yazdir(sayi1=5,sayi2=6,sayi3=7)
Çıktı:
{'sayi1': 5, 'sayi2': 6, 'sayi3': 7}
Birlikte kullanım örneği.
Python:
def yazdir(*args,**kwargs):
print(kwargs)
print(args)
yazdir(5,6,8,sayi1=5,sayi2=6,sayi3=7)
Çıktı:
{'sayi1': 5, 'sayi2': 6, 'sayi3': 7}
(5, 6, 8)