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

ما فائدة 'if __name__ == "__main__":' ؟

ali_agha

السؤال

Recommended Posts

  • 1

هنالك العديد من المصطلحات التي يجب على المبرمجين معرفتها بعد تعلم أساسيات البرمجة، وفي لغة البايثون ستجد عدة طرق برمجة يجب معرفتها قبل البدء بقراءة السورس كود (الشيفرة المصدرية) لأي برنامج آخر، ومن بين هذه الطرق نجد'if __name__ == "__main__":' فهذه الشيفرة توضع في نهاية الكود في حالة أنه تم تشغيل ملف البايثون كسكربت، لأن أغلب الشيفرات التي تجد في نهايتها هذا السطر تكون في الغالب شيفرات تحتوي على دوال يمكن استدعاؤها واستخدامها كمكتبة.

بعد هذا السطر يتم كتابة الشيفرة التي سيتم تنفيذها عند تشغيل ملف البايثون كسكربت.

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

  • 0

تخيل لديك ملف اسمه test1.py على سبيل المثال يحتوي هذه الشفرة البرمجية :

 

def add(num1, num2):
    return num1 + num2

result = add(3, 4)
print(result)

الناتج سيكون 7

وبعد مرور فترة قمت بكتابة ملف اسمه test2.py وتريد الدالة add ولكن بدلاً من كتابتها من جديد ستقوم بإستدعاء الملف  test1.py (إذا كان في نفس المسار )  وتقوم بإستخدام الدالة add الشفرة ستكون هكذا:

 

import test1

result = test1.add(12, 2)
print(result)

ولكن هناك مشكلة بما إنك قمت بإستدعاء test1 فان المفسر سيطبع 7 (وانت لا تريد هذا) لذا ستقوم بتعديل test1 بهذا الشكل:

 

def add(num1, num2):
    return num1 + num2

if __name__ == '__main__':
    result = add(3, 4)
    print(result)

__name__  هو متغير خاص يتم تعريفه عند تشغيل البرنامج

إذا كان البرنامج يعمل مباشرة فان __name__ تساوي "__main__" اما إذا قمت بإستدعاء الملف من ملف اخر فإن __name__  تساوي اسم الملف (في حالتنا هذه test1)

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...