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 ' |
| 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().
💥 الاستثناءات
SyntaxError— Raised when the source has a syntax error.ValueError— Raised when mode is invalid or the source contains null bytes.TypeError— Raised when source or mode has an invalid type.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
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 — مناسب لسيناريوهات «الترجمة/التحقق أولًا ثم التنفيذ».