تكرار السؤال: …
الإجابة المختصرة
لتمييز تشغيل الملف مباشرة عن استيراده كموديول؛ فعند التشغيل المباشر تكون قيمة __name__ هي "__main__"، وعند الاستيراد تكون اسم الموديول.
الشرح
يسمح هذا النمط بوضع كود التشغيل (CLI أو تشغيل خادم) في ملف يمكن استيراده أيضًا في الاختبارات أو موديولات أخرى دون تنفيذ ذلك الكود. الممارسة الجيدة هي وضع المنطق في دالة main() تعيد exit code، واستدعاؤها داخل الشرط، مما يسهّل اختبارها وربطها لاحقًا بـ console script entry point. وعند التشغيل بـ python -m package يُنفذ ملف __main__.py داخل الحزمة.
مثال بالكود
import sys
def main(argv: list[str]) -> int:
print(f"args: {argv}")
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))أخطاء شائعة
- كتابة منطق التشغيل في المستوى الأعلى للملف فيُنفذ عند كل import.
- استدعاء sys.exit داخل دوال قابلة لإعادة الاستخدام بدل إرجاع قيمة.