Python compile() fonksiyonu nedir?

Python

Selamlar. Bu yazının konusu Python compile fonksiyonu nedir olacak. Bir önceki yazı classmethod hakkında yazılmıştı. Bu yazıyı biraz da low-level olan bir konuya ayıracağız.

Python compile fonksiyonu nedir

Python compile fonksiyonu nedir?

Python’da kaynaktan alınan stringin kod nesnesi olarak döndürülmesine imkan tanır. Bu bir string, byte ya da ast olabilir. Resmi dokümanda ayrıca eğer büyük stringlerle çalışıyorsanız python yorumlayıcısının kırılabileceğina dair bir uyarı da mevcut.

Compile fonksiyonu source, filename, mode, flags=0, dont_inherit=False ve optimize=-1 parametreleri ile ortaya çıkarılmış bir fonksiyondur. Burada en çok kullanılanları source, filename ve mode şeklinde. Zaten fark ettiyseniz diğerleri default değerlere sahipler. Bunlara bakacak olursak

source: Normal bir string. Tabii ki Python kodu.

filename: Bu sanki x.py dosyasından yorumlanmaya hazırmış gibi x yazılabilir. Yani dosyanın adı x diyebiliriz. Eğer kod bu dosyadan okunamıyor ise kendiniz bir isim verebilirsiniz.

mode: eval, exec ya da single olabilir.

Bu fonksiyonda dinamik olarak oluşturulan Python kodu daha sonra eval ya da exec tarafından kullanılabilir halde olacaktır. Açıkcası çok kullanılabilir olmadığı için internet üzerinde yaygın kod örnekleri bulamıyorsunuz. Bilmeniz gereken şey, Python kodunuz string formda ise yani bir geliştirme ortamında değil ise kullanabilirsinz. Her şey dinamik yani.

Örneklerle Kullanım

Öncelikle ekrana bir mesaj yazdıralım

kod_nesnesi = compile('print("Merhaba")', 'benimmodule', 'exec')

exec(kod_nesnesi)

Bu kod compile fonksiyonunda yer alan ilk stringi çalıştıracaktır. Kendi fonksiyonumuzu oluşturup burada çağıralım:

kod_nesnesi = compile('def test():\n\n print("Merhaba")\n\ntest()', 'benimmodule', 'exec')

exec(kod_nesnesi)

Yukarıdaki kodlarda olan şeyi çalışma anındaymışız gibi anlatacak olursak, aşağıdaki kodu benimmodule.py isimli dosyaya ekledik:

def test():
    print("Merhaba")

test()

Ardından python benimmodule.py ismini konsoldan çağırdık. Daha çok metaprogramming alanında kullanılan bu fonksiyon hakkında bolca örnekler bulunmadığı için ben de bu kadarla kısıtlamak durumunda kalıyorum. Umarım faydalı olmuştur. Bu yazının konusu Python compile fonksiyonu nedir oldu. Eksik ya da hatalı bir konu var ise bildirmeniz mutlu eder. Okuduğunuz için teşekkür ederim.

İyi çalışmalar, kolay gelsin.