CodeBlanks Logo Icon CodeBlanks

compile

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

main.py
# ağacı derle ve çalıştır
# sonucu yazdır

Örnek çözüm

main.py
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

Soru
code = ____(tree, "<test>", "exec")
Cevap
code = compile(tree, "<test>", "exec")

Açıklama: compile(tree, dosya, mod) bir code object üretir.

3 compile modu 'exec' ne yapar?

main.py
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.

Uzman bölümündeki tüm dersler