اذهب إلى المحتوى
  • 0

ما الغرض من الأمر if __name__ == "__main__" في بايثون

علي عون

السؤال

Recommended Posts

  • 0

باختصار شديد
في لغات البرمجة مثل مثلا C# يكون هناك دالة رئيسية يتم استدعائها عند ارسال الكود الى المترجم Compiler ويطلق عليها الدالة main()

ولكن بايثون لغة برمجية نصية تستخدم المفسرات Interpreter ويتم التنفيذ سطر بسطر وعند استدعاء ملف Module به العديد من الدوال والكلاس وتريد أن تستخدم أحد هذه الدوال او الكلاسات فقط فيتم وضع هذه العبارة داخل المف المستدعى 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

هذا السطر مسئول عن التحقق مما إذا كان الملف تم تنفيذه (تشغيله) أم تم إستدعائه في ملف بايثون آخر (وكأنه مكتبة)

ويمكنك أن تقوم بتطبيق المثال التالي لكي تفهم أكثر.

أولًا قم بعمل ملفين بايثون الأول اسمه first.py والثاني اسمه second.py ولن نضع في كل ملف دالة print بسيطة تعمل عند تشغيل الملف كالتالي:

# first.py
print('First file')


# second.py
print('Second file')

بالتأكيد عند تشغيل كل ملف من الملفين السابقين سيتم طباعة الجملة التي بداخله، الآن لنقم بتعديل الملف الأول first.py ليكون محتواه كالتالي:

import second

print('First file')

كل ما قمنا به هو إستدعاء الملف الثاني بداخل الملف الأول، الآن لنقم بتشغيل الملف الأول python first.py وستجد أن النتيجة كالتالي:

Second file
First file

لاحظ هنا أنه تم تنفيذ الملف الثاني بمجرد إستدعائه وليس هذا ما نريده، ولكي نتجنب هذا الأمر نقوم بإستخدام السطر التالي في الملف الثاني:

if __name__ == "__main__":
	print('Second file')

هنا نقوم بالتحقق مما إذا كان الملف الثاني يتم تشغيله بطريقة مباشرة (True) أم تم إستدعائه في ملف آخر (False).

ويتم إستخدام هذه الطريقة في أغلب الحزم والمكتبات التي تقوم بتثبيتها لديك من خلال pip.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...