Python kwargları

Python işlevleri ve meth

Hem Python *args hem de **kwargs, bir işleve değişken sayıda argüman iletmenize izin verir. *args argümanlarında anahtar kelime bulunmazken **kwargs argümanlarının her biri bir anahtar kelime ile ilişkilendirilir.

Geleneksel olarak, Python'da fonksiyonlarla çalışırken, argümanları doğrudan fonksiyonu belirtmeniz gerekir. kabul edecek.

Gelecekte daha fazla argüman kabul etmek isteyebileceğiniz bazı durumlarda, bir işlevle birlikte kullanmak istediğiniz tüm parametreleri doğrudan belirtmek pratik değildir.

Python *args ve **kwargs anahtar sözcükleri burada devreye girer. Bu anahtar sözcükler, bir işleve tanımsız sayıda bağımsız değişken geçirmenize olanak tanır. 

Bu öğretici, örneklere atıfta bulunarak Python'daki *args ve **kwargs anahtar sözcüklerinin temellerini ve bunların nasıl karşılaştırıldığını tartışacaktır. 




Python *args

Python *args yöntemi çeşitli sayıda argümanı temsil eder. Kaç tane argüman iletmek istediğinizden emin değilseniz, bir fonksiyona argüman iletmenize izin verir.

“args” yer tutucudur. İşlevinizde, “args” herhangi bir değerle. “numaralar” sayıların veya “öğrenci” bir öğrenciyi temsil etmek; ayrıntılar.

*args yönteminin sözdizimi şöyledir:

Katılımcıların %81'i bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha emin hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleştirin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan daha az zaman harcadı.

Bu işlev değişken bir sayıyı kabul eder. argümanlar. Böylece sıfır argüman, bir argüman, iki argüman vb. iletebiliriz. İşlevimiz, işlevimize aktardığımız her argümanı konsola yazdırır.

Yıldız işaretinden sonraki değer, “sayılar” argümanlarımızı temsil eder.

Args anahtar sözcüğü, örneğin değişken miktarda sayı eklemek istiyorsanız, matematiksel işlemler yapıyorsanız yararlıdır.

*args Python Örneği

h3>

Birden çok argümanın değerlerini bir araya toplayan bir program yazalım. Bu, eklemek istediğimiz her değer için artı işareti kullanmak zorunda kalmadan matematiksel bir toplam gerçekleştirmemizi sağlar.

Birden çok argümanı bir araya getirebilen bir fonksiyon örneği:

def addNumbers(*args): toplam = 0 bir in argüman için: toplam = toplam + bir print(toplam) addNumbers (9, 10, 12) addNumbers(13, 14, 15, 15)

Kodumuz şunu döndürür:

31 57

Önce, adında bir Python işlevi tanımlıyoruz. numara ekleme programımızın kodunu içeren addNumbers(). Bu işlevin belirtilen bir bağımsız değişkeni vardır: *args.

*args anahtar sözcüğü, işleve geçirilebilecek değişken sayıda olası bağımsız değişkeni temsil etmek için kullanılır. 

Ardından, eklediğimiz toplam sayının kaydını tutan toplam adında bir Python değişkeni tanımlarız. Başlangıçta bu değişken 0'a ayarlanır.

args anahtar sözcüğündeki her bağımsız değişkeni gözden geçirmek için bir for döngüsü kullanırız ve her sayıyı toplamımıza ekleriz. *args içinde saklanan argümanlara atıfta bulunduğunuzda, “args” anahtar kelime. Ardından, programımızın hesapladığı toplam sayıyı yazdırıyoruz. 

Ana programımızda addNumbers() yöntemini iki kez çağırıyoruz. Fonksiyonu ilk çağırdığımızda fonksiyonumuzun toplamasını istediğimiz üç sayıyı belirtiyoruz. Bir daha fonksiyonu çağırdığımızda, fonksiyonumuzun birlikte toplamasını istediğimiz dört sayı belirtiriz.

*args kullandığımız için, fonksiyonumuza sınırsız sayıda argüman gönderebiliriz. Programımız, ne kadar argüman iletsek de çalışır.




Python **kwargs

**kwargs anahtar sözcüğü, bir işleve geçirilen rastgele sayıda argümanı temsil eder. **kwargs anahtar sözcükleri bir sözlükte saklanır. Her öğeye, argümanı ilettiğinizde bir argümanla ilişkilendirdiğiniz anahtar kelimeye başvurarak erişebilirsiniz.

**kwargs için sözdizimi:

def our_function(**record): anahtar için, record.items() içindeki değer: print("{} (anahtar) ve {} (değer)".format (anahtar, değer))

Bu kod, fonksiyonumuza değişken sayıda anahtar kelime argümanı iletmemizi sağlar. **kwargs adı sadece bir ikamedir. “kwargs” istediğiniz herhangi bir terimle.

Anahtar kelime argümanlarımız için yıldız işaretinden sonraki adı bir etiket olarak kullanırız. Bu durumda, etiketimiz "kayıt" olur. Bir **kwargs yöntemindeki değerler, anahtar/değer çiftlerinde depolanır. Bu nedenle, işlevimize ilettiğimiz tüm argümanları yinelemek için item() kullanmamız gerekiyor.


**kwargs Python Örneği

Anahtar kelimenin nasıl çalıştığını göstermek için **kwargs kullanan temel bir işlev örneğini inceleyelim.

< p>Diyelim ki bir kahve dükkanındaki müşterinin siparişiyle ilgili bilgileri görüntüleyen bir program oluşturuyoruz.Müşterinin sipariş bilgilerini bir fonksiyona geçirmek istiyoruz, bu da daha sonra verileri konsola yazdıracak. create a function:

"Python.Engineering hayatıma en çok ihtiyacım olduğu anda girdi ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerime uygun hayalimdeki işi buldum!"

Venus, Rockbot'ta Yazılım Mühendisi

< p>Kodumuz şunu döndürür:

{'kahve': 'Mocha', 'fiyat': 2.9, ' size': 'Large'}

Önce, değişken sayıda argümanı kabul etmek için **kwargs anahtar sözcüğünü kullanan printOrder() adlı bir işlev bildiririz. Bu fonksiyon, “kwargs” (fonksiyonumuza iletilen tüm anahtar kelime argümanlarını saklar) değerini yazdırır.

Ardından, fonksiyonumuzu çağırır ve üç argüman iletiriz: kahve, fiyat ve boyut. bu değerleri iletiyoruz, sözlük olarak fonksiyonumuza gönderiliyorlar.

Kodumuz, belirttiğimiz üç argümanla bir Python sözlüğü döndürdü. , onların değerlerinin yanında. İsteseydik, daha fazla veya daha az argüman iletebilirdik, çünkü **kwargs bir değişken sayıda argüman. 

Kwarg'larımız bir sözlükte saklandığından, değerlerine herhangi bir Python sözlüğünde yaptığımız gibi ayrı ayrı erişebiliriz.

Kodumuzu Geliştirmek

Şimdi, varsayalım. kahve siparişi ile ilgili detayları daha yapılandırılmış bir şekilde yazdırmak istedik. Bunu şu kodu kullanarak yapabiliriz:

 anahtar için, kwargs.items() içindeki değer: print(" {} eşittir {}".format(key, value)) printOrder(coffee="Mocha", price=2.90, size="Large")

Kodumuz şunu döndürür:< /p>

kahve eşittir Mocha fiyatı eşittir 2,9 boyut eşittir Büyük

Kodumuzu parçalara ayıralım. İlk olarak, anahtar sözcükleri kabul etmek için **kwargs anahtar sözcüğünü kullanan printOrder() adlı bir işlev bildiririz. Ardından, kwargs sözlüğümüzdeki her öğeyi yineleyen bir for döngüsü oluşturduk.

Sözlüğümüzdeki her bir anahtara ve değere erişmek için Python sözlük öğeleri() yöntemini kullanırız.

Bu for döngüsü, sözlüğümüzdeki her bir anahtarın adını yazdırır (kahve, fiyat ve boyut). Ardından, kod yazdırılır “ ”'a eşittir. Son olarak, kodumuz her bir tuşa karşılık gelen değeri yazdırır (sırasıyla “Mocha”, 2.90 ve “Large”). 

Programımıza dört veya iki anahtar kelime iletmek istersek, bunu yapabiliriz. Bunun nedeni, **kwargs'ın *args gibi anahtar kelimeli değişken uzunluklu argüman listelerini desteklemesidir.




Python *args vs. **kwargs

**kwargs kullanılarak bir fonksiyona gönderilen argümanlar bir sözlük yapısında saklanır.*args bir fonksiyona argümanların bir listesini gönderir.

Ayrıca, **kwargs kullanarak argümanlar gönderin, işlevinize göndermek istediğiniz değerlerin her birine anahtar kelimeler atamanız gerekir. *args kullanırken anahtar kelimeler belirtmeniz gerekmez.

Tek bir yıldız işareti *args'ı belirtirken **kwargs çift yıldız kullanır. Bu önemli bir ayrımdır çünkü hem “args” hem de “kwargs” yer tutuculardır. Bu kelimeleri herhangi bir değerle değiştirebilirsiniz.




Python Argümanları Nasıl Sıralanır

Python işlevinde Argümanlar belirli bir sırada görünmelidir. Bu sıra şu şekildedir:

  • Biçimsel argümanlar
  • *args
  • Anahtar kelime argümanları
  • **kwargs

Yani, hem *args hem de **kwargs ile çalışıyorsanız, bu kodu kullanırsınız:

def printOrder(*args, **kwargs):

Ayrıca, ortaya çıkabilecek belirli argümanlar için varsayılan değerler belirtmek istiyorsanız, bunu kullanabilirsiniz. code:

def printOrder(kahve, *args, coffee_order="Espresso", **kwargs):

Bu işlev, kahve adlı bir bağımsız değişken almayı bekler ve kahve_siparişi adlı herhangi bir bağımsız değişkenin varsayılan değeri Espresso< olacaktır. /em>. Ancak *args ve **kwargs kullanıldığından bu işlevle istediğiniz kadar argüman belirtebilirsiniz.






Sonuç

*args ve **kwargs anahtar sözcükleri, bir Python işlevine değişken sayıda argüman iletmenize izin verir. *args anahtar sözcüğü, bir işleve bir değerler listesi gönderir. **kwargs, bir işleve anahtar sözcüklerle ilişkili değerler içeren bir sözlük gönderir. 

Bu anahtar kelimelerin ikisi de kodunuza daha fazla esneklik kazandırır. Bunun nedeni, bir fonksiyon yazarken önceden belirli sayıda argüman belirtmek zorunda olmamanızdır.

En iyi Python kurslarını ve öğrenme kaynaklarını keşfetmek için Python Nasıl Öğrenilir kılavuzu.





Python kwargları: StackOverflow Questions