Python fonksiyonlarinda parametrelere varsayilan deger atamak

Merhaba.pythonda soyle bir sey yapmak istiyorum:bir fonksiyon olsun,bu fonksiyonun 3 parametresi olsun ve bu parametrelerden sadece biri zorunlu olsun.kullanicin girdigi parametre sayina gore islem yapalim.eger ne demek istedigimi anlamdiysaniz soyle bir ornek daha vereyim:range fonksiyonunu dusunun.en fazla 3 parametre aliyor(bildigim kadariyla).bu parametrelerden sadece biri zorunlu.eger biz bir parametre girirsek sifirdan girdigimiz rakama kadar rakmalari siraliyor.eger iki parametre girirsek ilk rakamdan ikinci rakama kadar siraliyor. 3. de atlama degeri.bu tarz zorunlu olmayan parametreleri pythonda nasil yapa biliriz?yardimci olursaniz sevinirim.

Zorunlu olacak parametre d─▒┼č─▒nda, di─čerlerine varsay─▒lan de─čer vererek.

evet olur ama kullanici o varsayilan degeri nasil degistirecek?

O parametreye de─čer vererek tabiki.

bir deneyeyim

├ľrne─čin

def fonksiyon(zorunlu, opsiyonel=None):
    pass

fonksiyon(4)
fonksiyon(4,5)

olmadi.yada ben yapamadim:

def deneme(a,b,c):
    a = 5
    b = 3
    print(a,b,c)
    return a+b+c

deneme(1)

yine olmadi.yada yine ben yapamadim:

def deneme(a=None,b = None,c):
    a = 5
    b = 3
    print(a,b,c)
    return a+b+c

deneme(1)

Fonksiyon ├žal─▒┼čt─▒ktan sonra de─čerleri atad─▒─č─▒n i├žin bu sorunu al─▒yorsun.
Fonksiyon ├žal─▒┼čt─▒─č─▒ anda senden a,b,c de─čerlerini bekliyor.

def deneme(a= 5, b = 3, c):
      return (a + b + c)

┼×imdi istersen a ve b de─čerlerinin default de─čerlerini de─či┼čtirebilirsin. c de─čerini kendin girmen gerekiyor.

┼×├Âyle de yap─▒labilir

def test(zorunlu,*opsiyonel):
	if(len(opsiyonel)): # di─čer parametreler de girilmi┼č mi?
		pass
	else: # sadece zorunlu olan m─▒ girilmi┼č?
		pass

test(5)
test(5,6,7)

hata veriyor:

SyntaxError: non-default argument follows default argument

Bu tan─▒mlama yanl─▒┼č. Varsay─▒lan parametreler, zorunlu parametrelerden sonra tan─▒mlanabilir.

1 Be─čeni

Syntax ErrorÔÇÖ├╝n i├žeri─čine g├Âre de─či┼čtirdi─čin zaman sorun d├╝zelecektir h─▒zl─▒ yazarken bu ┼čekil tan─▒mlad─▒m deneme ┼čans─▒m olmad─▒.

def deneme(c, a = 5 ,b = 3):
    return(c + a + b)

print(deneme(1))

S─▒n─▒rs─▒z parametre tan─▒mlamak ile ├╝├ž farkl─▒ parametre al─▒p ikisine default de─čer atamak farkl─▒ bir durum.

Hangisinin kullan─▒laca─č─▒ programc─▒n─▒n keyfine kalm─▒┼č bir durum. Ben olanaklar─▒ g├Âsterdim. ─░ki durumda da zorunlu ve opsiyonel parametreler bu ┼čekilde tan─▒mlanabiliyor. ─░ster s─▒n─▒rl─▒, ister s─▒n─▒rs─▒z parametre al─▒r. Kendi ├Ârneklerimde default de─čer None oldu─ču i├žin ├žok fark etmiyor ama di─čer durumlarda fark var tabi.

Kullan─▒c─▒n─▒n istedi─či gibi parametrenin ismi ile kullan─▒m istiyorsan─▒z ÔÇť*ÔÇŁ kullan─▒lm─▒yor.

def deneme(**opsiyonel):
    print(opsiyonel)

deneme(a = 3 , b = 4 , c = 6)

┼čeklinde olu┼čturman─▒z gerekiyor.

E─čer tek y─▒ld─▒z kullan─▒rsak;

def deneme(*opsiyonel):
    print(opsiyonel)

deneme(a = 3 , b = 4 , c = 6)

#TypeError: deneme() got an unexpected keyword argument 'a'

Bu sorunun sebepi ne idi?

Aksini iddia etmedim, parametreleri isim vererek kullanmad─▒─č─▒m i├žin. Kwargs detay─▒na girmeye de gerek duymad─▒m. Yine de eklemeniz iyi oldu :slight_smile:

1 Be─čeni

Bu tan─▒mlama yanl─▒┼č. Varsay─▒lan parametreler, zorunlu parametrelerden sonra tan─▒mlanabilir.

1 Be─čeni

Haa dogru pardon ben cumlenizi sonra da tanimlanabilir seklinde anladim yani bu hata hakkinda degil de @Frequenter e cevap verdiniz diye anladim pardon :smiley:

1 Be─čeni