Merhaba Python'da bir program yapıyorum yapay zeka üzerine kendi kafama göre yapıyorum.
Şu anda arayüzü bitirmiş gibiyim.
Şimdi tkinter modülününde bind diye bir komut var.
Şu an bu komutu uygulayıp geçiyor yani metin_button adlı butona bastığımızda TextBoxTurnBIND fonksiyonu çalışacak.
Burada bir sorun yok.
Fakat böyle yaptığımızda satırı geçmiyor ve tıklamasan bile fonksiyonu uyguluyor.
Bu neden böyle şimdi
Parantezin içine değer atamam gerektiğinde fonksiyonu çalıştırıyor.
Şunu istiyorum fonksiyona bir kod vereceğim bu koda göre işlem yapmasını istiyorum. Ama işte değer verdiğimde fonksiyonu uyguluyor.
Bunun sebebi func() yazdığın zaman fonksiyon çağrı operatörünün devreye girmesi, bunun sonucunda fonksiyonun return ettiği değer döndürülür yoksa da none döner. func yazdığın zaman ise fonksiyonun bellek adresi döndürülür. Burada bind fonksiyonunun aldığı parametre bir fonksiyon bellek adresi, ben olsaydım bir class yazardım init ile parametreleri initialize ederdim call ile de fonksiyon çağrı operatörünü kullanırdım.
Örneğin;
Python:
class function:
def __init__(self, a ,b):
self.a = a
self.b = b
def __call__(self, event):
print("call", self.a, self.b)
metin_button.bind("<Button-1>" , function("d", "c"))
Bunun sebebi func() yazdığın zaman fonksiyon çağrı operatörünün devreye girmesi, bunun sonucunda fonksiyonun return ettiği değer döndürülür yoksa da none döner. func yazdığın zaman ise fonksiyonun bellek adresi döndürülür. Burada bind fonksiyonunun aldığı parametre bir fonksiyon bellek adresi, ben olsaydım bir class yazardım init ile parametreleri initialize ederdim call ile de fonksiyon çağrı operatörünü kullanırdım.
Örneğin;
Python:
class function:
def __init__(self, a ,b):
self.a = a
self.b = b
def __call__(self, event):
print("call", self.a, self.b)
metin_button.bind("<Button-1>" , function("d", "c"))
bunun için lambda anahtar kelimesini kullanmalısınız. Bir fonksiyon sizinde bildiğiniz üzere parantez aç kapa yapılarak çağırılır. Peki lambda burada ne işe yarıyor. Aslında lambda da tek satırlık fonksiyon yazmamızı sağlayan bir anahtar kelime. İstersek bir değişkene atayıp yazabilir ve değişkeni çağırarak fonksiyonu çalıştırabiliriz istersek te bir değişken tanımlamadan veya fonksiyon ismi tanımlamadan yapacağımız işleme göre lambda anahtar kelimesini belirtip başka bir fonksiyonu çağırabiliriz, karmaşık tek satırlık kod yazabiliriz....
[CODE lang="python" title="lambda anahtar kelimesi kullanım" highlight="1"]######################### ÖRN #####################
class BlaBla:
def __init__(self):
pass
def falan(self):
return "filan"