Python-Çift Yıldız(**) Nedir?

less than 1 minute read

Alakalı Stackoverflow linki için tıkla

Python’da gördüğümüz bazı fonksiyonlar parametrelerini belirli bir sıraya göre almaz. Kafamıza göre girebiliriz fakat doğru obje oluşur. C++’da bildiğimiz gibi Constructorlara verilen parametrelerin sırası önemlidir, örneğin ;

Ogrenci(yas , isim , sinif) 
{
    ...
}

Şeklinde constructors sahip bir classın objesini

OgrenciObject = Ogrenci("Fatih",24,12)

şeklinde farklı sırada çağıramayız. Çağırmak istersek bu sıralama için

Ogrenci(isim , yas , sinif) {
    ...
} 

Şeklinde ayrı bir constructor tanımlamamız gerekmektedir.

Python’da bu sorunun önüne geçmek için ** (çift yıldız) kullanılır.

Örnek üzerinden gidelim ;

In [5]: def bar(**kwargs):
   ...:     for a in kwargs:
   ...:         print a, kwargs[a]
   ...:         
   ...:         

In [6]: bar(name='one', age=27)
age 27
name one

In [7]: bar(school='sami sipahi', class='7G' ,age=15)
school sami sipahi
class 7G
Age 15

Yukarıdaki fonksiyona tanımlanırken kaç tane parametre alacağı veya hangi sırayla alacağı girilmemiş,sadece aldığı wargs argumanını for’la gezmesi ve key, value şeklinde print etmesi söylenmiştir. Görüldüğü gibi, sonuç olarak aynı fonksiyon 2 ve 3 inputla çağırılmasına rağmen yine de çalışmış ve istenilen şekilde print etmiştir.

Leave a comment