📋 Table of Contents
إذا كنت قد كتبت كود Python أو قرأت سكريبتات Python، فمن المحتمل أنك واجهت السطر الغامضif __name__ == "__main__":. يظهر هذا النمط في برامج Python لا حصر لها، ومع ذلك يجده العديد من المبتدئين محيرًا. دعونا نزيل الغموض عن هذا التعبير المهم في Python.
إذا كنت قد كتبت كود Python أو قرأت سكريبتات Python، فمن المحتمل أنك واجهت السطر الغامض if __name__ == “__main__”:. يظهر هذا النمط في برامج Python لا حصر لها…
ماذا يفعل بالضبط؟
تقومif __name__ == "__main__":الجملة بفحص ما إذا كان سكريبت Python يتم تشغيله مباشرة أو يتم استيراده كوحدة في سكريبت آخر. عندما يقوم Python بتشغيل ملف، فإنه يحدد متغيرًا خاصًا يسمى__name__تعتمد قيمة هذا المتغير على كيفية تنفيذ الكود.
فهم __name__

🎨 AI Generated: Understanding __name__
إليك المفهوم الأساسي:
- عندما تقوم بتشغيل ملف Python مباشرة (على سبيل المثال،
python script.py)، يقوم Python بتعيين__name__to"__main__" - عندما تقوم باستيراد هذا الملف كوحدة في سكريبت آخر، يقوم Python بتعيين
__name__إلى اسم الوحدة (اسم الملف بدون .py)
مثال عملي
لنلقِ نظرة على مثال ملموس. أنشئ ملفاً يسمىcalculator.py:
python
def add(a, b): return a + b def subtract(a, b): return a - b if __name__ == "__main__": print("Running calculator.py directly") result = add(5, 3) print(f"5 + 3 = {result}")
عندما تقوم بتشغيل هذا الملف مباشرة باستخدامpython calculator.py، سترى:
code
تشغيل calculator.py مباشرة 5 + 3 = 8
ومع ذلك، إذا قمت باستيراد هذا الوحدة في ملف آخر:
python
import calculator result = calculator.add(10, 20) print(result)
الكود داخلif __name__ == "__main__":الكتلة لن يتم تنفيذه. سترى فقط30as output, not the “Running calculator.py directly” message.
لماذا هذا مفيد؟

🎨 AI Generated: Why Is This Useful?
This pattern provides several important benefits:
1. Code Reusability
You can write functions and classes that can be both imported and run standalone. This makes your code more modular and reusable.
2. Testing and Debugging
You can include test code or example usage within theif __name__ == "__main__":block that runs when you execute the file directly, but doesn't interfere when the module is imported.
3. المرونة بين Script و Module
يمكن لملف Python واحد أن يخدم غرضين مزدوجين: كمكتبة قابلة للاستيراد وكـ script قابل للتنفيذ.
حالات الاستخدام الشائعة
تشغيل Unit Tests
python
def process_data(data): return [x * 2 for x in data] if __name__ == "__main__": test_data = [1, 2, 3, 4, 5] result = process_data(test_data) assert result == [2, 4, 6, 8, 10] print("نجحت جميع الاختبارات!")
Command-Line Interface
python
import sys def main(): if len(sys.argv) > 1: filename = sys.argv[1] process_file(filename) else: print("الاستخدام: python script.py") if __name__ == "__main__": main()
أمثلة توضيحية
python
class DataProcessor: def __init__(self, data): self.data = data def process(self): return sum(self.data) if __name__ == "__main__": processor = DataProcessor([1, 2, 3, 4, 5]) print(f"Sum: {processor.process()}")
Best Practices

🎨 AI Generated: Best Practices
فيما يلي بعض التوصيات عند استخدام هذا النمط:
- حافظ على النظافة:ضع منطق التنفيذ الرئيسي في
main()دالة واستدعها منif __name__ == "__main__":الكتلة - استخدم للاختبار:قم بتضمين اختبارات بسيطة أو أمثلة استخدام لتوضيح كيفية عمل الوحدة الخاصة بك
- قم بتضمينه دائماً:حتى لو كنت تعتقد أنك لن تستورد الملف، فمن الممارسات الجيدة استخدام هذا النمط
- وثق السلوك:أضف تعليقات توضح ما يفعله السكريبت عند تشغيله مباشرة
الخلاصة
تقومif __name__ == "__main__":الـ pattern هو مصطلح أساسي في Python يفصل الكود المخصص للتشغيل عند تنفيذ ملف مباشرة عن الكود الذي يحدد وظائف قابلة للاستيراد. فهم هذا المفهوم سيساعدك على كتابة كود Python أكثر احترافية وقابلية لإعادة الاستخدام وفهم أفضل لبرامج Python التي تصادفها.
في المرة القادمة التي ترى فيها هذا السطر في كود Python، ستعرف بالضبط ما يفعله: يتحقق مما إذا كان السكريبت هو البرنامج الرئيسي أو يتم استيراده كوحدة، وينفذ الكود وفقاً لذلك.
🚀 ابقَ في صدارة منحنى التكنولوجيا
احصل على رؤى تقنية يومية ومراجعات صادقة وأدلة عملية.
🔗 Share this article
✍️ Leave a Comment