Python İşlevlerinde *args ve **kwargs Nasıl Kullanılır?
Python'da *args ve **kwargs konusunda uzmanlaşın. Dinamik konumsal ve anahtar kelime bağımsız değişkenleriyle esnek işlevler yazmayı, koleksiyonları açmayı ve sarmalayıcı işlevler oluşturmayı öğrenin.
Genel Bakış
Python'da genellikle değişken sayıda argümanı kabul edebilen işlevler tasarlamanız gerekecektir. Örneğin, herhangi bir sayıda tam sayının toplamını hesaplayan bir işlev veya değişen alanlarla meta verileri günlüğe kaydeden bir işlev. Python, kullanıcıları bir liste veya sözlük iletmeye zorlamak yerine iki özel sembol sağlar: `*args` ve `**kwargs`.
'*args' sözdizimi, bir işlevin herhangi bir sayıda konumsal bağımsız değişkeni kabul etmesine olanak tanır. Tek yıldız işareti '*', paket açma operatörü görevi görür. Bir işlev tanımına yerleştirildiğinde, fazladan konumsal bağımsız değişkenleri "args" adlı bir demet içinde toplar. Bu, giriş değerleri üzerinde yineleme yapmanıza, hesaplamalar yapmanıza veya bunları kolaylıkla başka bir işleve aktarmanıza olanak tanır.
Öte yandan, "**kwargs" sözdizimi, bir fonksiyonun herhangi bir sayıda anahtar kelime (adlandırılmış) argümanını kabul etmesine izin verir. Çift yıldız işareti `**', bu argümanları 'kwargs' adlı bir sözlükte toplar. Bu, isteğe bağlı konfigürasyonların, stil argümanlarının veya veritabanı niteliklerinin iletilmesi için inanılmaz derecede faydalıdır. Unutmayın, 'args' ve 'kwargs' isimleri gelenektir; asıl işlevsellik tek ve çift yıldız işaretleriyle sağlanır.
Kod ve Yürütme Çıkışı
Bu kod, değişken sayılarını toplamak için *args kullanımını, kullanıcı profillerini yazdırmak için **kwargs kullanımını ve her ikisini de tek bir işlevde birleştirmeyi gösterir.
def sum_all(*args):
print("args type:", type(args).__name__)
return sum(args)
print("Sum (1, 2, 3):", sum_all(1, 2, 3))
print("Sum (10, 20):", sum_all(10, 20))
def print_profile(**kwargs):
print("kwargs type:", type(kwargs).__name__)
for key, value in kwargs.items():
print(f"{key}: {value}")
print_profile(name="Bob", role="developer", country="US")
def master_function(first, *args, **kwargs):
print(f"First argument: {first}")
print(f"Additional positional args: {args}")
print(f"Keyword args: {kwargs}")
master_function("hello", 1, 2, 3, debug=True, user_id=42)args type: tuple
Sum (1, 2, 3): 6
args type: tuple
Sum (10, 20): 30
kwargs type: dict
name: Bob
role: developer
country: US
First argument: hello
Additional positional args: (1, 2, 3)
Keyword args: {'debug': True, 'user_id': 42}Adım Adım Uygulama
- Konumsal bağımsız değişkenleri bir demet içinde toplamak için bir parametreden (ör. *args) önce tek bir yıldız işareti kullanın.
- Anahtar kelime argümanlarını bir sözlükte toplamak için bir parametreden önce çift yıldız işareti kullanın (ör. **kwargs).
- Doğru parametre sırasını koruyun: standart parametreler, *args, yalnızca anahtar kelimeden oluşan parametreler, ardından **kwargs.
- *yinelenebilir veya **dictionary ileterek işlevleri çağırırken paket açma sözdizimini kullanın.
Sıkça Sorulan Sorular
"Args" ve "kwargs" adlarını kullanmak zorunda mıyım?
Hayır, bunlar standart topluluk sözleşmeleridir. Sözdizimsel olarak yalnızca * ve ** önekleri gereklidir. *values ve **options yazabilirsiniz, ancak okunabilirlik açısından *args ve **kwargs'a bağlı kalmanız önemle tavsiye edilir.
Bir işlevi tanımlarken doğru sıralama nedir?
Bir işlev imzasındaki argümanların doğru sırası şu şekildedir: konumsal argümanlar, *args, yalnızca anahtar kelimeden oluşan argümanlar ve son olarak **kwargs.
İlgili Konular
Python'da nasıl sınıf oluşturulacağını öğrenin. __init__ yapıcısında, örnek yöntemlerinde, self anahtar sözcüğünde ve nesne örneklemesinde ustalaşın.
Python'da Lambda Fonksiyonları Nasıl KullanılırPython'da lambda işlevlerinin nasıl kullanılacağını öğrenin. Lambda tuşlarıyla anonim işlevlerde, satır içi geri aramalarda ve liste verilerini sıralamada uzmanlaşın.
Önerilen Python Kaynakları
İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.
Python Döngüleri
Veriler üzerinde yineleme yapmak için Python döngülerini nasıl kullanacağınızı öğrenin. Etkileşimli örneklerle for döngüleri, while döngüleri, kesme, devam etme ve döngü en iyi uygulamaları konusunda uzmanlaşın.
Python String Yöntemleri Hile Sayfası
Python dize manipülasyonu için eksiksiz bir başvuru kılavuzu. Dize özelliklerini biçimlendirme, arama, bölme, değiştirme ve denetleme konusunda uzmanlaşın.
Python vs JavaScript: Hangi Programlama Dili En İyisidir?
Python ve JavaScript arasında kapsamlı bir karşılaştırma. Sözdizimi farklılıklarını, performansı, kullanım örneklerini (arka uç ve ön uç) ve kodlama örneklerini keşfedin.