ربما تكون قد شاهدت هذا السطر من التعليمات البرمجية إذا كان __name__=="__main__": كثيرًا في نصوص Python، دون معرفة الغرض الفعلي منه. لا تقلق لأننا سنناقش هذا الأمر في هذه المدونة القصيرة
عند تشغيل برنامج أو برنامج نصي مباشرةً، تقوم Python تلقائيًا بتعيين "main" للمتغير الخاص name. يتم ذلك بشكل أساسي للإشارة إلى أن الملف هو البرنامج النصي "الرئيسي" هنا ويتم تشغيله مباشرة بدلاً من استيراده إلى ملف آخر.
لفهم ذلك، أنشئ نصًا برمجيًا جديدًا لـ Python، لنفترض أنه "example.py" واكتب:
print("Name of Script: ", __name__)
قم بتشغيل هذا وسترى اسم البرنامج النصي الناتج: __main__. وهذا ببساطة لأن الملف يتم تشغيله مباشرة.
الآن، أنشئ ملف نصي بايثون آخر وقم باستيراد example.py إلى هذا الملف. قم بتشغيله وسترى نتيجة مختلفة تقول اسم البرنامج النصي: مثال. هذا ببساطة لأننا الآن بدلاً من تشغيله مباشرةً، نقوم باستيراد البرنامج النصي وتشغيله بشكل غير مباشر. وبالتالي، تعرض بايثون الآن الاسم الفعلي للملف.
دعونا نجري بعض التغييرات في ملف المثال الخاص بنا، حتى نتمكن من فهمه بشكل أفضل.
def s_name(): print("Name of Script: ", __name__) s_name() def greet(): print("Hello! How are you doing?") if __name__=="__main__": greet()
الآن إذا قمت بتشغيل هذا مباشرة، فسيتم تنفيذ كل شيء بشكل مثالي، ولكن إذا قمت بتشغيل الملف الآخر حيث تقوم باستيراد البرنامج النصي example.py، فستلاحظ أن استدعاء دالة الترحيب لم يتم تنفيذه. لماذا هذا؟
هذا بسبب الشرط if. ما يفعله الشرطي هو أنه يتحقق مما إذا كان الملف يتم تشغيله مباشرة أم لا. إذا تم تشغيله مباشرة، فسيتم تعيين main إلى المتغير الخاص name الذي سيجعل هذا الشرط صحيحًا وسيعمل كل شيء داخل الشرط كالمعتاد.
ولكن من ناحية أخرى، إذا كنت تقوم باستيراده إلى ملف آخر وتشغيله من هناك بشكل غير مباشر، فلن يكون بيان الشرط صحيحًا ولن يتم تنفيذ أي شيء تم وضعه داخل الشرط.
هذه هي أهمية هذا البيان الشرطي. يمنع مترجم بايثون من تشغيل أسطر التعليمات البرمجية غير الضرورية تلقائيًا عندما نقوم باستيراد برنامج نصي كوحدة نمطية.
ومع ذلك، يمكننا استدعاء هذه الوظائف حتى عندما نقوم باستيراد برنامج نصي كوحدة نمطية. على سبيل المثال:
import example example.greet()
بهذه الطريقة يمكننا استدعاء أي دالة من الوحدة المستوردة بشكل مثالي حتى في حالة عدم استيفاء الشرط.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3