bir fonksiyonum olsun ve kullanıcı istediği kadar değer atayabilsin. İster 1, ister 100… bu mümkün müdür? Yardımcı olursanız sevinirim…
def fonksiyon(x, y):
x = input("X değerini girin.")
y = input("Y değerini girin.")
fonksiyon()
Böyle bir şey mi arıyorsunuz?
Demek istediğim, aynı fonksiyon şu ikisini de alabilsin:
fonksiyon(a)
fonksiyon(a, b, c, d, e, f, g)
diyelim ki bu bir toplama fonksiyonu ve girilen sayıları topluyor. Bir yerde bu fonksiyonu 1+2 olarak kullanırken bir yerde 1+2+3+4 olarak nasıl kullanabilir?
Bunlara variadik fonksiyon yani “değişken sayıda argüman alabilen fonksiyon” deniyor. Python ile şu şekilde yapılabiliyor:
def fonksiyon(*args):
for arg in args:
print(arg)
Başındaki *
herhangi sayıda (0 dahil) pozisyonel argüman kabul edebileceğini söylüyor ve bu argümanlar args
isimli tuple’da toplanıyor.
Mesela print
fonksiyonun imzasında görüyoruz bunu:
print(*objects, sep=" ", end="\n", file=sys.stdout, flush=False)
Bu sayede şunlar çalışıyor
print("a")
print()
print("a", "b")
print("a", "b", "g")
Şuna dikkat etmek gerekebilir: diğer argümanları (sep
, end
ve diğerleri) keyword olarak paslamak durumundayız yoksa pozisyonel olduklarında objects
'in içerisine katılırlar:
>>> # Burada aslında " -- "yi `sep` olarak paslamaya çalışıyorum
>>> print("merhaba", "evet", " -- ")
merhaba evet --
>>> # Ama o da diğer argümanlar gibi ele alındı. `sep=...` diye vermek gerekir:
>>> print("merhaba", "evet", sep=" -- ")
merhaba -- evet
Çok teşekkürler @anon18277073, sayenizde istediğim fonksiyonu yazabildim!