Selamlar,
Düzenli ifadelerde verilen aşağıdaki örnekte degistir fonksiyonu çağırılırken neden parametre almıyor. Parametre ataması burada nasıl yapılmaktadır? Bu yapıyı ilk kez görüyorum. https://python-istihza.yazbel.com/standart_moduller/regex.html
import re
derle = re.compile("çile[kğ]", re.IGNORECASE)
def degistir(nesne):
a = {"çileğ":"eriğ", "Çileğ":"Eriğ", "Çilek":"Erik", "çilek":"erik"}
b = nesne.group().split()
for i in b:
return a[i]
print(derle.sub(degistir, metin))
sub fonksiyonu parametre olarak değistir fonksiyonunu alıyor evet ama değistir fonksiyonunun parametresi yok yani print(derle.sub(degistir(param1), metin))
şeklinde olmasını beklerdim çünkü degistir fonksiyonu 1 parametre ile tanımlanmış. degistir fonksiyonunun alması gereken 1 parametre burada nasıl degistir fonksiyonuna atanmakta?
direk parantezler ile de çağırabilir ama __call__ magic metodunu kullanmak daha iyi gibi (sanırım)
__call__ aynı zamanda sınıf örneklerini fonkisyon gibi çağırabilmemize de yarıyor https://www.geeksforgeeks.org/__call__-in-python/
filter sizin degistir fonksiyonu, match ise derlediğiniz regex (derle) ile metin üzerinde bulunan bir eşleşme.
Siz fonksiyonun kendisini re.sub’a argüman olarak veriyorsunuz. re.sub bu fonksiyonun imzasının “yalnız bir argüman (re.match objesi) alıp geriye bir string döndüren” şeklinde olmasını istiyor. Ne zaman bir eşleşme bulursa, o match objesini sizin pasladığınız fonksiyona gönderip, fonksiyonunuzun döndürdüğü string’i metine yerleştiriyor.