compile
- Python kursu
- Uzman
- Ders 17/47
- 5 dk
compile() ile AST'yi çalıştırılabilir koda çevirmeyi öğrenirsin.
compile nedir?
compile bir AST'yi veya kod dizesini çalıştırılabilir bir code object'e çevirir. Üç argüman alır: kaynak, dosya adı ve mod ("exec", "eval" veya "single").
Mod "exec" birden çok deyimi çalıştırır; "eval" tek bir ifadeyi değerlendirir. Elde edilen code object'i exec veya eval ile çalıştırırsın. Bir AST'yi dönüştürüp yeniden derlemek, kod üretimi ve makro benzeri araçlar için güçlü bir tekniktir.
AST'den code object
Bir AST'yi compile(tree, "<test>", "exec") ile derlersin. İkinci argüman dosya adıdır; hata mesajlarında görünür, genellikle "<test>" gibi bir ad yazılır. Üçüncü argüran moddur.
Elde edilen code object'i exec(code, ns) ile bir ad alanında çalıştırırsın. ns sözlüğü değişkenleri tutar; ns["sonuc"] ile erişirsin. Bu akış — parse, dönüştür, derle, çalıştır — kod işleme araçlarının klasik zinciridir. Her adımı ayrı kontrol edebildiğin için esnektir.
Uygulama compile ile AST çalıştır
import ast ile modülü içe aktar. ast.parse("sonuc = 6 * 7") ile ağacı oluştur. compile(tree, "<test>", "exec") ile code object üret. ns = {} sözlüğü içinde exec(code, ns) yap ve ns["sonuc"]'u yazdır.
Başlangıç kodu
# ağacı derle ve çalıştır
# sonucu yazdırÖrnek çözüm
import ast
tree = ast.parse("sonuc = 6 * 7")
code = compile(tree, "<test>", "exec")
ns = {}
exec(code, ns)
print(ns["sonuc"])Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 compile kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
compile |
Koda çevirir |
exec |
Çoklu deyim |
eval |
Tek ifade |
code object |
Çalıştırılabilir |
2 compile çağrısını tamamla
code = ____(tree, "<test>", "exec")
code = compile(tree, "<test>", "exec")
Açıklama: compile(tree, dosya, mod) bir code object üretir.
3 compile modu 'exec' ne yapar?
code = compile("x = 1
y = 2", "<t>", "exec")
ns = {}
exec(code, ns)
print(ns)- Bir hata fırlatır
- Birden çok deyimi çalıştırır Doğru cevap
- Tek ifade değerlendirir
- Yalnızca sabit döndürür
Açıklama: 'exec' modu birden çok deyimi çalıştırır; 'eval' tek ifade içindir.