Fonksiyona kullanıcının istediği kadar değer atama

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

4 Beğeni

Çok teşekkürler @anon18277073, sayenizde istediğim fonksiyonu yazabildim!

2 Beğeni