يتم تنفيذ وظيفة البايثون الرئيسية فقط عند تنفيذها كبرنامج بايثون. كما تعلمون ، يمكننا أيضًا استيراد برنامج بايثون كوحدة ، وفي هذه الحالة يجب ألا تقوم وظيفة البايثون الرئيسية بالتنفيذ.
وظيفة البايثون الرئيسية
وظيفة البدء هي نقطة الدخول لأي برنامج. ولكن مترجم البايثون ينفذ كود الملف النصي بترتيبه ولا يستدعي أي طريقة إذا لم تكن جزءًا من الكود. ولكن إذا كانت جزءًا مباشرًا من الكود ، فسيتم تنفيذها عندما يتم استيراد الملف كوحدة. لهذا السبب ، هناك تقنية خاصة لتعريف وظيفة البدء الرئيسية في برنامج البايثون ، بحيث يتم تنفيذها فقط عند تشغيل البرنامج مباشرة ولا يتم تنفيذها عند استيراده كوحدة. دعونا نرى كيفية تعريف وظيفة البدء الرئيسية في برنامج بسيط. python_main_function.py
print("Hello")
print("__name__ value: ", __name__)
def main():
print("python main function")
if __name__ == '__main__':
main()
-
عند تنفيذ برنامج بايثون ، يبدأ مترجم البايثون في تنفيذ الكود داخله. كما يقوم أيضًا بتعيين قيم متغيرات ضمنية قليلة ، واحدة منها هي
__name__
والتي تكون قيمتها__main__
. -
بالنسبة للدالة الرئيسية في بايثون، يجب أن نقوم بتعريف الدالة ثم استخدام شرط
if __name__ == '__main__'
لتنفيذ هذه الدالة. -
إذا تم استيراد ملف مصدر بايثون كـ وحدة، يقوم مفسر بايثون بتعيين قيمة
__name__
إلى اسم الوحدة، لذا سيعيد الشرط false ولن يتم تنفيذ الأسلوب الرئيسي. -
توفر بايثون لنا مرونة في تسمية الطريقة الرئيسية باسم أي شيء، ومع ذلك، من الممارسات الجيدة تسميتها باسم الطريقة الرئيسية. الشيفرة أدناه صحيحة تمامًا، ولكنها غير مستحسنة.
def main1(): print("وظيفة بايثون الرئيسية") if __name__ == '__main__': main1()
الصورة أدناه توضح الإخراج عند تنفيذ python_main_function.py
كملف مصدر.
الوظيفة الرئيسية لـ Python كوحدة
الآن دعونا نستخدم ملف المصدر Python أعلاه كوحدة واستيراده في برنامج آخر. python_import.py
import python_main_function
print("Done")
الآن عند تنفيذ البرنامج أعلاه ، يتم إنتاج الإخراج أدناه.
Hello
__name__ value: python_main_function
Done
لاحظ أن أول سطرين يتم طباعتهما من ملف المصدر python_main_function.py
. لاحظ أن قيمة __name__
مختلفة وبالتالي لم يتم تنفيذ الطريقة الرئيسية. لاحظ أن تعليمات برنامج Python يتم تنفيذها سطراً بسطر ، لذا من المهم تعريف الطريقة الرئيسية () أولاً قبل الشرط if لتنفيذ الطريقة الرئيسية. وإلا فستحصل على خطأ كما NameError: name 'main' is not defined
. هذا كل شيء عن وظيفة Python الرئيسية. المرجع: Python Docs
Source:
https://www.digitalocean.com/community/tutorials/python-main-function