English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل بايثون الأساسي

تحكم في مسار بايثون

الوظائف في بايثون

أنواع البيانات في بايثون

عمليات ملفات بايثون

أهداف وصفات بايثون

تاريخ ووقت بايثون

معرفة متقدمة في بايثون

كتيب مرجع بايثون

دالة main() في بايثون

في هذا الدليل، سنتعلم كيفية تشغيل __name__ الخاص ببرنامج بايثون ديناميكيًا في سياقات مختلفة.

ما هو دالة main() في بايثون؟

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

يقدم بايثون اتفاقيات أخرى لتعريف نقطة التشغيل. واحدة من هذه الاتفاقيات هي استخدام دالة main() في ملف بايثون وخصائص __name__.

ما هو __name__ في بايثون؟

__name__ هو متغير داخلي خاص في بايثون يُظهر اسم المodule الحالي.

اعتمادًا على موقع تنفيذ ملف بايثون، فإنه يحتوي على قيم مختلفة. دعنا نرى مثالًا.

تشغيل ملف بايثون كـ سكربت

افترض أن لدينا ملفًا يُدعىhelloworld.pyملف بايثون، يحتوي على محتوى كالتالي:

print(__name__)

إذا كنا نعمل من سطر الأوامرhelloworld.py،إذاً سيتم تشغيله كملف سكربت بايثون. يمكننا تشغيل برنامج بايثون باستخدام الأمر التالي:

python helloworld.py
تعريفُ foo():
    str="__main__"
    print(str);
إذا __name__ == "__main__":
    foo()

عند تشغيل البرنامج كنص، يتم تعيين قيمة المتغير __name__ إلى__main__. لذلك، سيكون الناتج للبرنامج التالي كالتالي:

__main__

تشغيل ملف بايثون كmodule

يمكننا أيضًا تشغيل ملف بايثون كmodule. لفعل ذلك، يجب علينا استيراد هذا الملف إلى برنامج بايثون آخر. دعونا نرى مثالاً.

لنفترض أن لديناmain.pyملف بايثون. يحتوي على ما يلي:

استيراد helloworld

سيكون الناتج عند تشغيل هذا الملف كالتالي:

helloworld

في هذا المثال، يمكننا رؤية أن استيراد module سيركز على تنفيذ جميع الأوامر في ملف module.

لكن، يمكننا رؤية أن بدلاً من عرضه __main__، سيظهر اسم module في البرنامج، وهو helloworld.

ذلك لأن، عند تشغيل ملف بايثون كmodule، يتم تخصيص اسم الملف نفسه للمتغير __name__.

الاستخدام المشترك للشرطية إذا مع __name__

الآن، بعد أن فهمنا كيفية تخصيص قيمة المتغير __name__، يمكننا استخدام جملة الشرطية في سياقات مختلفة لتشغيل نفس ملف بايثون بطرق مختلفة.

دعونا نرى مثالاً.

لنفترض أننا نملكhelloworld.pyيتم تغيير محتويات الملف إلى ما يلي:

دفيعة main():
    print("Hello World")
إذا __name__ == "__main__":
    main()

الآن، عندما نقوم بتشغيله كنص عبر سطر الأوامر، سيكون الناتج:

Hello World

لكن، عندما نقومmain.pyعندما يتم تشغيل الملف كmodule، لا يتم عرض أي输出来 لأن وظيفة main() لم يتم تنفيذها.

في هذا المثال، قمنا بإنشاء وظيفة main() مخصصة في ملف helloworld.py. تُنفيذ هذه الوظيفة فقط عندما يتم تشغيل البرنامج كنص مستقل وليس كمدخل لمodule.

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