Anasayfa / python / Python Compile ve Exec Fonksiyonları

Python Compile ve Exec Fonksiyonları

Python, derleyici ve yorumlayıcı arasındaki uyumu sağlayan bir dildir. Python’da yerleşik olarak bulunan  compile ve exec fonksiyonları sayesinde, Python kodları dinamik olarak derlenip yürütülebilir. Bu makalede, Python’daki compile ve exec fonksiyonlarının nasıl kullanılacağını ve işlevlerini inceleyeceğiz.

Compile Fonksiyonu

compile fonksiyonu, Python’da geçerli bir kod parçasını derler ve Python bytecode’a dönüştürür. Bu bytecode daha sonra exec veya eval gibi fonksiyonlar ile çalıştırılabilir. compile fonksiyonunun temel sözdizimi şu şekildedir:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Parametreler:
  • source: İşlenmesi gereken kaynak kodu (string, ast.AST veya bytecode)
  • filename: Hata mesajlarında kullanılacak olan dosya adı
  • mode: Derleme modu, ‘exec’, ‘eval’ veya ‘single’ olabilir
  • flags (isteğe bağlı): Kodun derlenirken nasıl optimize edileceğini belirleyen bayraklar
  • dont_inherit (isteğe bağlı): Eğer True ise, derlenen kod mevcut bayrakları kullanmaz
  • optimize (isteğe bağlı): Optimizasyon seviyesini belirler (-1, 0, 1 veya 2)

Exec Fonksiyonu

exec fonksiyonu, Python’da dinamik olarak çalıştırılabilir kodları yürütmek için kullanılır. Temel sözdizimi şu şekildedir:
Parametreler:
  • object: compile fonksiyonu ile derlenmiş bir Python nesnesi veya yürütülebilir bir Python ifadesi
  • globals (isteğe bağlı): Global değişkenler için kullanılacak sözlük
  • locals (isteğe bağlı): Yerel değişkenler için kullanılacak sözlük

Compile ve Exec Örnekleri

Örnek 1: Basit Kod Derleme ve Çalıştırma
# Kaynak kodu derleme
source_code = "print('Hello, World!')"
bytecode = compile(source_code, "example.py", "exec")

# Derlenen kodu çalıştırma
exec(bytecode)
Örnek 2: Fonksiyon Tanımlama ve Çağırma
source_code = """
def greeting(name):
    return f'Hello, {name}!'

name = 'John Doe'
print(greeting(name))
"""

bytecode = compile(source_code, "example.py", "exec")
exec(bytecode)
Örnek 3: Global ve Yerel Değişkenlerle Çalışma
source_code = """
x = 10
y = 20
result = x + y 
"""
bytecode = compile(source_code, "example.py", "exec") 
global_vars = {"x": 5, "y": 15} 
local_vars = {} 
exec(bytecode, global_vars, local_vars) 
print("Global x:", global_vars["x"]) 
print("Global y:", global_vars["y"]) 
print("Result:", local_vars["result"])
Yukarıdaki örnekte, global_vars ve local_vars adlı iki sözlük oluşturduk. Bu sözlükleri exec fonksiyonuna globals ve locals parametreleri olarak verdik. Bu sayede, çalıştırılan kodun global ve yerel değişkenlerini kontrol edebiliriz.
Sonuç olarak, Python’daki compile ve exec fonksiyonları, dinamik olarak kod derlemesi ve yürütülmesi için güçlü araçlar sunar. Bu sayede, uygulamalarınızda esneklik ve yeniden kullanılabilirlik sağlayarak daha etkili ve özelleştirilebilir çözümler geliştirebilirsiniz.

Hakkında ibrahim

İlgili Makaleler

python locale.Error: unsupported locale setting locale.setlocale(locale.LC_ALL, ‘Turkish_Turkey.1254’)

if os.name == 'nt': locale.setlocale(locale.LC_ALL, 'Turkish_Turkey.1254') yeni windows updateleri ile artık Türkiye (‘Turkish_Türkiye’, ‘1254’)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir