eval() تنفيذ تعبير

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

eval() تنفيذ تعبير

تنفذ eval() تعبير Python الموجود في سلسلة نصية وتُرجع النتيجة. **تحذير أمني**: لا تستخدم eval مع مدخلات غير موثوقة.

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

📝 الصياغة

eval(expression[, globals[, locals]])

⚙️ المعاملات

expression مطلوبA Python expression string or code object.
globals اختياريThe global namespace dict.(القيمة الافتراضية:None)
locals اختياريThe local namespace dict.(القيمة الافتراضية:None)

القيمة المُعادة:The result of evaluating the expression.

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

▶ مثال

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

المخرجات:

15
1024
⚠️ تحذير يمكن لـ eval تنفيذ كود عشوائي، وفي بيئة الإنتاج استخدم ast.literal_eval بدلًا منه.
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qما الفرق بين eval() و exec()؟
Aينفّذ eval() تعبيرًا واحدًا ويُعيد نتيجته (مثل eval('1 + 2') يُرجع 3)؛ بينما ينفّذ exec() جملًا وكتلًا (if و for و def وغيرها) ويُعيد None.
Qماذا يحدث مع eval('x = 1')؟
Aيُثار SyntaxError. الإسناد جملة وليس تعبيرًا؛ eval() يقيّم التعبيرات فقط — لتنفيذ الجمل استخدم exec().
Qلماذا لا يجب استخدام eval لمعالجة مدخلات المستخدم؟
Aلأن eval() يستطيع تنفيذ كود اعتباطي، مثل السلسلة eval("__import__('os').system('dir')")؛ لتحليل مدخلات المستخدم استخدم ast.literal_eval الذي يتعامل مع القيم الحرفية فقط.
Qهل يمكنني استخدام متغيرات خارجية داخل eval؟
Aافتراضيًا نعم (يستخدم نطاقي العمومي/المحلي الحاليين)؛ ويمكن تمرير نطاقات مخصصة عبر وسيطتي globals/locals لتقييد الأسماء التي يمكن للتعبير الوصول إليها.
Web-Tutorial.com

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

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

100%