Python Değişken Sayıda Parametre: Kwargs

Python Değişken Sayıda Parametre: Kwargs

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.


Yorum Ekle

Üzerine gel