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

فهم آلية التعيين في بايثون

السؤال

نشر

 المثال في الفيديو:

a = 5
b = 10
a, b = b, a

الشخص الذي يشرح الدرس في اليوتوب قال:

في البرمجة الجزء الذي على اليمين هو الذي يتم تنفيذه أول (على يمين إشارة المساواة)

حسب فهمي: مفسر بايثون يقرأ سطر سطر من اليسار إلى اليمين ، يعني حسب فهمي ، سوف يتم إنشاء المتغير (a) ، ثم سوف يتم وضع القيمة (5) بداخله و يتم الحفظ بالذاكرة.

لكن الشخص يقول: مثلا في السطر الأول ، أنا أوجدت الرقم (5) ثم حجزت مكان في الذاكرة ، سميته بحرف (a) و حطيت فيه الرقم (5) ، لم أفهم هذا الجزء ؟!

أرجوا مساعدتي في فهم هذا الأمر مع جزيل الشكر

Recommended Posts

  • 0
نشر

 القاعدة البرمجية الثابتة في عملية التعيين هي معالجة ما يوجد على يمين إشارة =، وعندما تنتهي وتصبح لديك قيمة جاهزة، يتم ربطها بالمتغير الذي على اليسار.

وبالنسبة للذاكرة ففي لغات برمجة أخرى مثل C أو C++، يُنظر للمتغير على أنه صندوق في الذاكرة تضع فيه القيمة، أما في بايثون، فالأمر مختلف وأشبه بالبطاقات اللاصقة Labels:

  1. مفسر بايثون يرى الرقم 5 على اليمين أولاً.
  2. يقوم بإنشاء كائن في الذاكرة وهو كائن رقمي قيمته 5.
  3. ثم ينظر لليسار ويجد الحرف a، فيعتبر a مجرد لاصقة أو اسم مستعار ويقوم بلصقه على الرقم 5.

 

  • 0
نشر

هناك فرق بسيط بين طريقة قراءة الكود وطريقة تنفيذ عملية الإسناد (Assignment) وطريقة تخزين البيانات في الذاكرة.

فمثلا في السطر الأول لديك a = 5 هنا :

  • الخطوة الأولى هى تحديد القيمة 5 : حيث يتعامل بايثون مع الرقم 5 بوصفه عدد صحيح من النوع int. ويكون هذا العدد متاح لتستخدمه في عملية الإسناد.
  • الخطوة الثانية وهى الحصول على كائن يمثل العدد : حيث يمثل العدد 5 كائن في بايثون. ويحتاج الكائن إلى ذاكرة ولكن لا يشترط أن ينشئ بايثون كائن جديد في كل مرة تكتب فيها الرقم 5 فقد يعيد استخدام كائن موجود.
  • الخطوة الثالثة وهى ربط الاسم a بالكائن : حيث يربط بايثون الاسم a بالكائن الذي يمثل العدد 5 بحيث يمكنك الوصول إلى القيمة باستخدام هذا الاسم.

ولاحظ هنا اني وضحت انه تم ربط الاسم بالقيمة وليس بالضرورة حجز مكان جديد في الذاكرة وتسميته a كما لو كان الاسم نفسه صندوق يحتوي الرقم.

حيث هذه نقطة مهمة في بايثون فالمتغير هو اسم يشير إلى كائن وليس صندوق يجب أن يحتوي نسخة مستقلة من القيمة.

اما بخصوص هل يقرأ بايثون من اليسار إلى اليمين أم ينفذ اليمين أولا هنا يوجد فرق بين أمرين:

  • قراءة وتحليل الكود: فبايثون يعالج صياغة السطر وفق قواعد اللغة البرمجية.
  • تنفيذ عملية الإسناد: في الإسناد العادي يتم تقيم الجزء الأيمن أولا ثم يتم إسناد النتيجة إلى الاسم الموجود في الجزء الأيسر.

إذا ليس المقصود أن بايثون يتجاهل الطرف الأيسر أو يبدأ قراءة النص من اليمين بل المقصود أن تقييم قيمة الطرف الأيمن يسبق إسنادها إلى الطرف الأيسر.

ونأتي للسطر الأخير لديك a, b = b, a هنا :

الخطوة الأولى: تقييم الطرف الأيمن بالكامل b, a و قيمة b هي 10 و قيمة a هي 5 . إذا النتيجة التي تم تقييمها هي مجموعة من القيم بالترتيب التالي:

(10, 5)

والخطوة الثانية هى إسناد القيم إلى الطرف الأيسر :

a, b = (10, 5)

إذا يحصل الاسم a على القيمة 10 و يحصل الاسم b على القيمة 5.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...