def karşılık_bul(*args, **kwargs):
for sözcük in args:
if sözcük in kwargs:
print("{} = {}".format(sözcük, kwargs[sözcük]))
else:
print("{} kelimesi sözlükte yok!".format(sözcük))
sözlük = {"kitap" : "book",
"bilgisayar" : "computer",
"programlama": "programming"}
karşılık_bul("kitap", "bilgisayar", "programlama", "fonksiyon", **sözlük)
yukarıda tanımlanan sözlük değişkeni (sözlük veri tipinde olan) oluşturduğumuz karşılık_bul() fonk. içine yazılırken " **sözlük " şeklinde yazılıyor. Bir sözlük veri tipindeki değişken fonk. içine yazılamıyor biliyorum fakat burada tam olarak o " ** " ne işe yarıyor tam anlayamadım.
eğer o " ** " (iki yıldız) kullanımı sözlük veri tipini yukarı ki şekle getiriyor ise;
print(**sözlük)
yapıtığımda neden syntax hatası alıyorum. Muhtemel kuvvetle basit hatalardan oluşan bir durum söz konusu fakat hiç programlama mantığı bilmeden python’a başladığım için kusuruma bakmayın
anlatımınız için teşekkür ederim, yine de kafamda canlanmadı desem yalan söylemiş olmam. Sözlük veri tipine ** (çift yıldız) koyduğumuz zaman gerçekleşen değişim kafamda canlanmıyor bir türlü.
Bu yukarıdaki kod hata vermeden çalışır. Çünkü sozluk isimli sözlüğün içindeki anahtarlar zaten print fonksiyonunun ön-tanımlı argümanları. Bu yukarıdaki ifade şuna dönüşür:
yani aslında benim yukarıdaki varmış olduğum sonuç gibi, sizin söylediğiniz üzere benim;
print(**sözlük)
yaptığımda syntax hata almamın sebebi de aslında print(kitap= "book", bilgisayar = "computer", programlama = "programming") haline gelmesi ve print fonk’nun böyle parametre alamamasıymış.
Haklısınız, aynen öyle. print fonksiyonundaki anahtar kelime argümanlarının isimleri belirlenmiş. Dolayısıyla bu tanımlı olan anahtar kelime argümanlarından başka anahtar kelime argümanı yazamayız.
Ama mesela şöyle bir fonksiyonda, bu parametreler belli değil.
evet bunu anladım, istediğim bunu ezberlemektense arkadan arkaya gerçekleşen işlemi ve mantığını kavramaktı onu da anladım çok şükür. Desteğin için teşekkür ederim.