Python'da değişken sayıda keyword arguments (anahtar kelime argümanları) almak için **kwargs
kullanılır. **kwargs
, bir fonksiyona kaç tane keyword argument (anahtar-değer çifti) gönderileceğini bilmediğimiz durumlarda kullanılır. Bu argümanlar bir sözlük (dictionary) olarak işlenir.
Temel Yapı
**kwargs
ile bir fonksiyon tanımladığınızda, fonksiyon çağrılırken ona istediğiniz kadar keyword argument (anahtar-değer çifti) gönderebilirsiniz:
def fonksiyon_adi(**kwargs):
# kwargs, bir sözlük olarak işlenir
for anahtar, deger in kwargs.items():
print(f"{anahtar}: {deger}")
-
**kwargs
, değişken sayıda anahtar-değer çiftini bir sözlük içinde toplar. - Fonksiyonun içinde
kwargs.items()
metodu ile bu anahtar-değer çiftlerine erişilebilir.
Örnek: **kwargs
Kullanımı
Aşağıdaki örnekte, bir kişiye ait farklı bilgileri keyword arguments olarak gönderip bu bilgileri yazdıran bir fonksiyon yazalım:
def kisi_bilgileri(**kwargs):
for anahtar, deger in kwargs.items():
print(f"{anahtar.capitalize()}: {deger}")
# Fonksiyona istediğimiz kadar keyword arguments gönderebiliriz
kisi_bilgileri(isim="Ahmet", yas=30, meslek="Mühendis", sehir="İstanbul")
Çıktı:
Isim: Ahmet Yas: 30 Meslek: Mühendis Sehir: İstanbul
*args
ve **kwargs
Birlikte Kullanımı
Bir fonksiyonda hem *args
hem de **kwargs
kullanılabilir. *args
pozisyonel argümanları, **kwargs
ise keyword argümanlarını toplar. Ancak *args
her zaman **kwargs
'dan önce tanımlanmalıdır.
def bilgi_ver(*args, **kwargs):
print("Pozisyonel argümanlar:", args)
print("Keyword argümanlar:", kwargs)
# Hem pozisyonel hem de keyword argümanlar gönderebiliriz
bilgi_ver(1, 2, 3, isim="Ahmet", yas=30)
Çıktı:
Pozisyonel argümanlar: (1, 2, 3) Keyword argümanlar: {'isim': 'Ahmet', 'yas': 30}
**kwargs
ile Varsayılan Parametreler
Fonksiyonlarda **kwargs
ile birlikte varsayılan parametreler de kullanılabilir. Varsayılan parametreler her zaman **kwargs
'tan önce tanımlanmalıdır.
def bilgi_ver(isim, **kwargs):
print(f"İsim: {isim}")
for anahtar, deger in kwargs.items():
print(f"{anahtar.capitalize()}: {deger}")
# Varsayılan parametre ile birlikte keyword argümanlar gönderme
bilgi_ver("Ahmet", yas=30, meslek="Mühendis", sehir="Ankara")
Çıktı:
İsim: Ahmet Yas: 30 Meslek: Mühendis Sehir: Ankara
**kwargs
ile Sözlük Göndermek
Eğer bir sözlüğü **kwargs
ile fonksiyona göndermek isterseniz, sözlüğün başına **
ekleyerek elemanlarını keyword arguments olarak gönderebilirsiniz.
def bilgi_yazdir(**kwargs):
for anahtar, deger in kwargs.items():
print(f"{anahtar}: {deger}")
bilgiler = {"isim": "Ayşe", "yas": 28, "meslek": "Doktor"}
# Sözlük elemanlarını keyword arguments olarak fonksiyona gönderebiliriz
bilgi_yazdir(**bilgiler)
Çıktı:
isim: Ayşe yas: 28 meslek: Doktor
**kwargs
'ı Fonksiyon İçinde İşlemek
**kwargs
'ı bir fonksiyonun içinde esnek bir şekilde kullanabilirsiniz. Örneğin, belirli bir anahtarın olup olmadığını kontrol edebilir ve ona göre işlem yapabilirsiniz.
def urun_ekle(**kwargs):
if "fiyat" in kwargs:
print(f"Ürün fiyatı: {kwargs['fiyat']} TL")
else:
print("Ürün fiyatı belirtilmedi")
# Keyword arguments ile ürün bilgisi gönderme
urun_ekle(urun_adi="Laptop", fiyat=5000)
# Ürün fiyatı: 5000 TL
urun_ekle(urun_adi="Tablet")
# Ürün fiyatı belirtilmedi
Özet
-
**kwargs
, fonksiyona değişken sayıda keyword arguments göndermek için kullanılır. -
**kwargs
, fonksiyon içinde bir sözlük olarak işlenir ve anahtar-değer çiftlerine erişilebilir. -
*args
ve**kwargs
bir arada kullanılabilir, ancak*args
her zaman önce gelir. - Sözlükleri
**kwargs
ile fonksiyona keyword arguments olarak gönderebilirsiniz.