Bu yazıda, Python * args ve ** kwargs, kullanımları ve işlevleri hakkında örneklerle bilgi edineceğiz.
Programlamada, benzer işlemi gerçekleştiren yeniden kullanılabilir bir kod yapmak için bir işlev tanımlarız. Bu işlemi gerçekleştirmek için belirli bir değere sahip bir işlevi çağırırız, bu değere Python'da işlev argümanı denir.
Python Fonksiyonu ve Python Fonksiyon Bağımsız Değişkenlerini okumanızı tavsiye ederiz.
Varsayalım, 3 sayının toplanması için bir fonksiyon tanımladık.
Örnek 1: 3 numara ekleme işlevi
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
Yukarıdaki programı çalıştırdığımızda çıktı
toplam: 35
Yukarıdaki programda adder()
x, y ve z olmak üzere üç bağımsız değişkene sahip fonksiyonumuz var . adder()
Fonksiyonu çağırırken üç değer ilettiğimizde , çıktı olarak 3 sayının toplamını alırız.
İşlevde 3'ten fazla argüman geçirdiğimizde ne olacağını görelim adder()
.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
Yukarıdaki programı çalıştırdığımızda çıktı
TypeError: adder () 3 konumsal argüman alıyor ancak 5 verildi
Yukarıdaki programda, elde ettiğimiz adder()
3 argüman yerine fonksiyona 5 argüman ilettik TypeError
.
Python'da * args ve ** kwargs'a giriş
Python'da, özel semboller kullanarak bir işleve değişken sayıda argüman aktarabiliriz. İki özel sembol vardır:
- * args (Anahtar Kelime Olmayan Bağımsız Değişkenler)
- ** kwargs (Anahtar Kelime Argümanları)
İşlevlere geçirilecek argümanların sayısından emin olmadığımızda argüman olarak * args ve ** kwargs kullanırız.
Python * değiştirgeleri
Yukarıdaki örnekte olduğu gibi, bir işleve geçirilebilecek argümanların sayısından emin değiliz. Python, anahtar kelime olmayan değişken sayılarının işlevini yerine getirmesine izin veren * argümanlara sahiptir.
Fonksiyonda, *
değişken uzunluk argümanlarını iletmek için parametre adından önce bir yıldız işareti kullanmalıyız. Argümanlar bir tuple olarak iletilir ve bu aktarılan argümanlar, yıldız hariç parametre ile aynı adı taşıyan fonksiyon içinde tuple oluşturur *
.
Örnek 2: Değişken uzunluk argümanlarını işleve geçirmek için * args kullanma
def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)
Yukarıdaki programı çalıştırdığımızda çıktı
Toplam: 8 Toplam: 22 Toplam: 17
Yukarıdaki programda, değişken uzunluk argüman listesini adder()
işleve geçirmemize izin veren parametre olarak * num kullandık . Fonksiyonun içinde, iletilen argümanı ekleyen ve sonucu yazdıran bir döngümüz var. İşleve argüman olarak değişken uzunluklu 3 farklı tuple geçtik.
Python ** kwargs
Python, * args kullanarak çalışmak için değişken uzunlukta anahtar kelime olmayan bağımsız değişken geçirir, ancak bunu anahtar kelime bağımsız değişkenini geçirmek için kullanamayız. Bu problem için Python'un ** kwargs adlı bir çözümü vardır, anahtar kelime argümanlarının değişken uzunluklarını işleve aktarmamızı sağlar.
Fonksiyonda, **
bu tür bir argümanı belirtmek için parametre isminden önce çift yıldız kullanırız . Bağımsız değişkenler bir sözlük olarak aktarılır ve bu bağımsız değişkenler, çift yıldız hariç parametre ile aynı ada sahip işlev içinde bir sözlük oluşturur **
.
Örnek 3: Değişken anahtar kelime argümanlarını işleve geçirmek için ** kwargs kullanma
def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)
Yukarıdaki programı çalıştırdığımızda çıktı
Veri türü argümanın: Adı Sita, Soyadı Sharma Yaş, 22 Telefon 1234567890 Veri türü: Adı John, Soyadı Ahşap E-posta [email protected] Ülke Wakanda Yaş 25 Telefon 9876543210
Yukarıdaki programda intro()
parametre olarak ** veri içeren bir fonksiyonumuz var . İşleve değişken argüman uzunluğuna sahip iki sözlük gönderdik intro()
. intro()
Geçilen sözlüğün verileri üzerinde çalışan ve sözlüğün değerini yazdıran for loop inside işlevimiz var.
Hatırlanacak şeyler:
- * args ve * kwargs, fonksiyonun değişken uzunluklu argüman almasına izin veren özel anahtar sözcüklerdir.
- * args, anahtar kelimeli olmayan argümanlar listesinin değişken sayısını ve listenin hangi işleminin gerçekleştirilebileceğini iletir.
- ** kwargs, üzerinde bir sözlüğün işleminin gerçekleştirilebileceği işlev için değişken sayıda anahtar kelime argümanları sözlüğünü geçirir.
- * args ve ** kwargs işlevi esnek hale getirir.