المشاركة الأصلية بواسطة حمد محمد مشاهدة المشاركة
ما معنى هذا السطر؟
هذا السطر ينفذ ما تحته إذا تم تشغيل الكود بشكل مباشر لا عن طريق الإستيراد
لأن __name__ هو متغير خاص عند تشغيل الكود بشكل مباشر تسند إليه القيمة "__main__" أما عند الاستيراد فتسند إليه قيم أخرى

مثال:
كود:
[LEFT]if __name__ == "__main__":
  # will run only if module directly run
  print "I am being run directly"
else:
  # will run only if module imported
  print "I am being imported"
[/LEFT]
وهذا بسبب أن البايثون لايملك دالة main ظاهرة بل جميع الكود يكون داخل هذه الدالة ضمنيا

كود:
[LEFT][RIGHT][LEFT]# file one.py
def func():
    print("func() in one.py")

print("top-level in one.py")

if __name__ == "__main__":
    print("one.py is being run directly")
else:
    print("one.py is being imported into another module")

مثال آخر:
[/LEFT]
كود:
[LEFT][RIGHT][LEFT][RIGHT][LEFT] # file two.py
import one

print("top-level in two.py")
one.func()

if __name__ == "__main__":
    print("two.py is being run directly")
else:
    print("two.py is being imported into another module")

[/LEFT]

[/RIGHT]

[/LEFT]


[/RIGHT]

[/LEFT]
[/RIGHT]

[/LEFT]

عند تشغيل ملف one.py

كود:
[LEFT]python one.py
[/LEFT]
تكون المخرجات
كود:
[LEFT]top-level in one.py
one.py is being run directly[/LEFT]
وعند تشغيل الملف two.py

كود:
[LEFT]python two.py

[/LEFT]
كود:
[LEFT]top-level in one.py
one.py is being imported into another module
top-level in two.py
func() in one.py
two.py is being run directly
تكون المخرجات

هذا الشرح مستفاد من موقع stackoverflow من هذه الأسئلة 1, 2

[/LEFT]