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

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

Python'da değişken sayıda parametre almak için *args kullanılır. *args, bir fonksiyona kaç tane argüman gönderileceğini bilmediğimiz durumlarda kullanılır ve bu argümanlar bir tuple (demet) olarak işlenir. *args sayesinde fonksiyonlara istediğimiz kadar pozisyonel argüman gönderebiliriz.

Temel Yapı

def fonksiyon_adi(*args): # args, bir tuple olarak çalışır for arg in args: print(arg)
  • *args, bir tuple olarak tüm pozisyonel argümanları alır.
  • İstediğiniz kadar argüman gönderebilirsiniz.

Örnek: *args Kullanımı

Aşağıdaki örnekte, bir fonksiyon yazalım ve ona kaç tane sayı verilirse verilsin bu sayıların toplamını hesaplayalım.

def sayilari_topla(*args): return sum(args) # Farklı sayıda argümanlarla fonksiyonu çağırabiliriz print(sayilari_topla(1, 2, 3)) # Çıktı: 6 print(sayilari_topla(10, 20, 30, 40)) # Çıktı: 100

*args ile Döngü Kullanımı

*args parametresine gelen argümanları bir döngü ile işleyebiliriz. Örneğin, bu argümanları tek tek yazdıran bir fonksiyon yazalım:

def bilgileri_yaz(*args): for arg in args: print(arg) # Fonksiyonu çağırarak argümanları döngüyle işleyebiliriz bilgileri_yaz("Ahmet", 25, "Mühendis", "İstanbul")

Çıktı:

Ahmet 25 Mühendis İstanbul

Pozisyonel Argümanlar ile *args Birlikte Kullanımı

Fonksiyonunuzda *args ile birlikte diğer pozisyonel argümanları da kullanabilirsiniz. Ancak, normal pozisyonel argümanlar her zaman *args'tan önce gelmelidir.

def selamla(mesaj, *isimler): for isim in isimler: print(f"{mesaj}, {isim}!") # Bir mesaj ve birden fazla isim gönderebiliriz selamla("Merhaba", "Ahmet", "Ayşe", "Mehmet")

Çıktı:

Merhaba, Ahmet! Merhaba, Ayşe! Merhaba, Mehmet!

*args ve Varsayılan Parametreler

*args ile varsayılan parametreleri de aynı fonksiyonda kullanabilirsiniz. Varsayılan parametreler, *args'tan önce veya sonra gelebilir, ancak *args'tan sonra olan varsayılan parametrelerin keyword arguments ile çağrılması gerekir.

def bilgi_gir(isim, *args, yas=18 ): print(f"İsim: {isim}, Yaş: {yas}") print("Diğer bilgiler:", args) # Yaş belirtilmezse varsayılan değer kullanılacak bilgi_gir("Ahmet", "Mühendis", "İstanbul") # Varsayılan yaş: 18 # Yaş belirtilirse verilen değer kullanılacak bilgi_gir("Ayşe", "Doktor", "Ankara", yas=30) # Yaş: 30

Çıktı:

İsim: Ahmet, Yaş: 18 Diğer bilgiler: ('Mühendis', 'İstanbul') İsim: Ayşe, Yaş: 30 Diğer bilgiler: ('Doktor', 'Ankara')

*args ile Liste veya Tuple Göndermek

Eğer bir liste ya da tuple'ı *args olarak bir fonksiyona göndermek isterseniz, bu veri yapısının başına * ekleyerek elemanlarını ayırabilirsiniz.

def sayilari_topla(*args): return sum(args) liste = [1, 2, 3, 4] tuple_dizi = (5, 6, 7) # Liste veya tuple'daki elemanları fonksiyona gönderebiliriz print(sayilari_topla(*liste)) # Çıktı: 10 print(sayilari_topla(*tuple_dizi)) # Çıktı: 18

Özet

  • *args ile bir fonksiyona değişken sayıda pozisyonel argüman gönderebilirsiniz.
  • *args, gelen argümanları bir tuple olarak işler.
  • Pozisyonel argümanlar, *args'tan önce tanımlanmalı, aksi takdirde hata oluşur.
  • Varsayılan parametreler ve *args birlikte kullanılabilir, ancak doğru sıralama önemlidir.


Yorum Ekle

Üzerine gel