Python Fonksiyonlar *args ve **kwargs Nedir?

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Harika insanlar da hata yapar
Seçkin Üye
Katılım
17 Ağu 2015
Mesajlar
361
Çözümler
1
Tepki puanı
55
10 HİZMET YILI
*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.



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)
 
Ultra Üye
Katılım
24 Ara 2017
Mesajlar
1,512
Çözümler
8
Tepki puanı
189
Ödüller
9
8 HİZMET YILI
Bilgiler için teşekkkür ederiz ellerine sağlık.
 
What Happn After U Lose
Süper Üye
Katılım
29 Ara 2019
Mesajlar
615
Çözümler
2
Tepki puanı
55
Ödüller
7
6 HİZMET YILI
ye its full good
 
Üye
Katılım
6 Eyl 2019
Mesajlar
49
Tepki puanı
5
Yaş
26
6 HİZMET YILI
Thanks for info guys. Python is "easy" to learn but still you need to practice it a lot to get better
 
Onaylı Üye
Katılım
21 Şub 2018
Mesajlar
63
Çözümler
1
Tepki puanı
3
Ödüller
3
Yaş
28
8 HİZMET YILI
Faydalı konu, teşekkürler
 
who knows when you will be gone
Seçkin Üye
Katılım
31 Mar 2018
Mesajlar
334
Tepki puanı
105
Ödüller
9
Yaş
25
8 HİZMET YILI
var değişkeni gibimi hocam ?
 
Seçkin Üye
Katılım
6 Eki 2018
Mesajlar
306
Çözümler
1
Tepki puanı
76
Ödüller
7
7 HİZMET YILI
Bilgiler için teşekkkür ederiz ellerine sağlık
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst