المتغيرات في python

أحاول فهم الكود التالي والتجربة معه لكن الصورة ليست واضحة كليا:

print("I run all the time!")

if __name__ == '__main__':
    print("I've been run directly!")

if __name__ == 'test':
    print("I've been imported!")
1 Like

السلام عليكم و رحمة الله تعالى و بركاته
اخي كل موديل module في البايثون له سمة خاصة attribute تسمى name عند تشغيل الموديل كبرنامج رئيسي السمة تاخذ القيمة main و تاخذ اسم الموديل name of the script/module كقيمة في حالة استخدامه كرنامج ثانوي أي استخدام import و سأضع مثال هنا حتى تتضح الرؤيا جيدا
مثلا عندنا الموديل التالي:

foo = 100
 
def hello():
    print("i am from my_module.py")
 
if __name__ == "__main__":
    print("Executing as main program")
    print("Value of __name__ is: ", __name__)
    hello()

لو نشغل الموديل مباشرة أي كبرنامج رئيسي نحصل على النتيجة التالية:

Executing as main program
Value of __name__ is: __main__
i am from my_module.py

نلاحظ ان البرنامج أرجع قيمة name هي main
الآن ننشيء موديل آخر مثلا اسمه test و نضع فيه الكود التالي:

import my_module
 
print(my_module.foo)
my_module.hello()
 
print("Value of my_module __name__ is: ",my_module.__name__)

لو نشغل البرنامج الآن سنحصل على النتيجة التالية

100
i am from my_module.py
Value of my_module __name__ is:  my_module

نلاحظ ان البرنامج أرجع قيمة name هي my_module و هي اسم الموديل.
أتمنى أنني وفقت في الشرح
بالتوفيق

3 Likes

نعم الصورة وضحت بشكل كبير جدا :slight_smile:
شرح دقيق صراحة ومجهود محترم
شكرا لك…

2 Likes

اشتي افهم كيف طبع لي
1
2
3
4

names = [1, 2, 3, 4]

for x in names:
    print(x)
2 Likes

في كل مرة سيتم وضع قيمة عنصر من عناصر الكائن names في المتغير x و من ثم سيتم طباعتها.

3 Likes

نعم صحيح
شكرا

2 Likes

ممكن سؤال اخر بسيط
في الكود التالي

def get_all(self):
        # get all posts - الحصول على كل المنشورات

    def add(self, post):
        # append post - إضافة منشور

    def get_by_id(self, id):
        # search for post by id - id البحث عن منشور بالمعرف

لما ذا علي ان ادخل self في كل مره

2 Likes

اهااا
لتخزن لدى دالة حخسفس الرئيسية ويتم تصدير قيمة المتغير الى الدالة الرئيسية
صح
او لها تفسير اخر

3 Likes

ال self تستعمل للاشارة لل object الذي تم انشاؤه عن طريق ال class الحالية
هكذا يصير كل ال methods و ال attributes الأخرى الموجودة في نفس ال object متاحة للاستعمال هناك

على سبيل المثال لو تريد تستعمل get_all داخل add تصير هكذا

class PostStore:

    def add(self, post):
        self.get_all()

يمكنك العودة لدرس ال classes للمزيد من المعلومات من هنا

3 Likes