Bir cevap daha eklemek istiyorum:
Fonksiyon çağırırken anahtar kelime argümanı ile birlikte yanlış pozisyon sırasına sahip konumsal parametreyi geçirmeye çalıştığınızda olur.
there is difference between parameter and argument
Python'da Argümanlar ve Parametreler hakkında ayrıntılı olarak okuyabilirsiniz.
def hello(a,b=1, *args):
print(a, b, *args)
hello(1, 2, 3, 4,a=12)
Üç parametremiz olduğu için:
a konumsal bir parametredir
b = 1, anahtar kelime ve varsayılan parametredir
* args değişken uzunluk parametresidir
bu yüzden ilk önce bir konumsal parametre olarak bir atarız, yani konumsal argümana konum sırasına göre değer sağlamamız gerekir, burada sıra önemlidir. ancak fonksiyon çağırırken a'nın yerine 1 argümanını geçiriyoruz ve sonra a'ya değer de veriyoruz, anahtar kelime argümanı olarak ele alıyoruz. şimdi a'nın iki değeri var:
biri konumsal değerdir: a = 1
ikincisi, a = 12 olan anahtar kelimeli değerdir
Çözüm
Şimdi değiştirmemiz hello(1, 2, 3, 4,a=12)
gerekiyor, hello(1, 2, 3, 4,12)
şimdi a sadece 1 olan bir konumsal değer alacak ve b 2 değerini alacak ve geri kalan değerler * args (değişken uzunluk parametresi) alacak
ek bilgi
* args'ın 2,3,4 olmasını ve a'nın 1 ve b'nin 12 almasını istiyorsak
o zaman böyle yapabiliriz
def hello(a,*args,b=1):
pass
hello(1, 2, 3, 4,b=12)
Bir şey daha :
def hello(a,*c,b=1,**kwargs):
print(b)
print(c)
print(a)
print(kwargs)
hello(1,2,1,2,8,9,c=12)
çıktı :
1
(2, 1, 2, 8, 9)
1
{'c': 12}
self
örtük olmaktan daha iyi olduğu konusunda asla tatmin edici bir yanıt alamayacaksınızthis
.