أحاول فهم الكود التالي والتجربة معه لكن الصورة ليست واضحة كليا:
print("I run all the time!")
if __name__ == '__main__':
print("I've been run directly!")
if __name__ == 'test':
print("I've been imported!")
أحاول فهم الكود التالي والتجربة معه لكن الصورة ليست واضحة كليا:
print("I run all the time!")
if __name__ == '__main__':
print("I've been run directly!")
if __name__ == 'test':
print("I've been imported!")
السلام عليكم و رحمة الله تعالى و بركاته
اخي كل موديل 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 و هي اسم الموديل.
أتمنى أنني وفقت في الشرح
بالتوفيق
نعم الصورة وضحت بشكل كبير جدا
شرح دقيق صراحة ومجهود محترم
شكرا لك…
اشتي افهم كيف طبع لي
1
2
3
4
names = [1, 2, 3, 4]
for x in names:
print(x)
في كل مرة سيتم وضع قيمة عنصر من عناصر الكائن names في المتغير x و من ثم سيتم طباعتها.
نعم صحيح
شكرا
ممكن سؤال اخر بسيط
في الكود التالي
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 في كل مره
اهااا
لتخزن لدى دالة حخسفس الرئيسية ويتم تصدير قيمة المتغير الى الدالة الرئيسية
صح
او لها تفسير اخر
ال self تستعمل للاشارة لل object الذي تم انشاؤه عن طريق ال class الحالية
هكذا يصير كل ال methods و ال attributes الأخرى الموجودة في نفس ال object متاحة للاستعمال هناك
على سبيل المثال لو تريد تستعمل get_all داخل add تصير هكذا
class PostStore:
def add(self, post):
self.get_all()
يمكنك العودة لدرس ال classes للمزيد من المعلومات من هنا