إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

دلالة (if __name__ == '__main__':)

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • [شرح] دلالة (if __name__ == '__main__':)

    ما معنى هذا السطر؟
    هذا السطر ينفذ ما تحته إذا تم تشغيل الكود بشكل مباشر لا عن طريق الإستيراد
    لأن __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]
    التعديل الأخير تم بواسطة حمد محمد; الساعة 27-01-2011, 05:56 PM.
    سبحان الله وبحمده سبحان الله العظيم
يعمل...
X