compile() ترجمة الكود المصدري إلى كائن كود

آخر تحديث: 2026-09-22

compile() ترجمة الكود المصدري إلى كائن كود

تقوم compile() بترجمة سلسلة الكود المصدري إلى كائن كود، يمكن تسليمه إلى exec() / eval() للتنفيذ.

التصنيفالدوال المدمجة
النوعدالة مدمجة
إصدار بايثونall

📝 الصياغة

compile(source, filename, mode)

⚙️ المعاملات

source مطلوبSource code: a string, bytes, or AST object.
filename مطلوبFilename shown in error messages; pass '' for inline source.
mode مطلوبCompilation mode: 'exec', 'eval', or 'single'.
flags اختياريCompiler flags, e.g. ast.PyCF_ONLY_AST.(القيمة الافتراضية:0)
dont_inherit اختياريWhether to ignore surrounding compile flags.(القيمة الافتراضية:False)
optimize اختياريOptimization level; -1 uses the interpreter's setting.(القيمة الافتراضية:-1)

القيمة المُعادة:A code object executable by exec() / eval().

💥 الاستثناءات

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

3
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qما الفرق بين أنماط compile() الثلاثة؟
A'exec' يترجم كتلة جمل (if و def و for وغيرها)، و'eval' يترجم تعبيرًا واحدًا (يمكن تقييمه)، و'single' يترجم جملة تفاعلية واحدة ويطبع نتيجة التعبيرات.
Qماذا أُمرّر للوسيطة filename؟
Aمن المعتاد تمرير '' للكود المدمج المُولّد ديناميكيًا؛ يظهر فقط في رسائل الخطأ (الأثر الخلفي) ولا علاقة له بملفات حقيقية — لا يُقرأ أي ملف فعلًا.
Qكيف أنفّذ نتيجة compile()؟
Aمرّر كائن الكود المُعاد إلى exec(code) أو eval(code): كائن الكود في وضع 'exec' يُنفّذ بـ exec، ووضع 'eval' يُنفّذ بـ eval.
Qماذا يحدث إذا كان المصدر يحتوي خطأ في الصيغة؟
Aيُثار SyntaxError في مرحلة compile() نفسها، ويكون اكتشاف المشكلة أبكر من تنفيذ السلسلة بـ exec — مناسب لسيناريوهات «الترجمة/التحقق أولًا ثم التنفيذ».
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%