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

السؤال

Recommended Posts

  • 0
نشر
بتاريخ الآن قال Amr Harby:

في المحاضرة كان هناك مثال علي اسناد قيم صف الي صف اخر .... الا يتعارض هذا مع كونها immutable  ؟

 

لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية، وهذا لنساعدك بالشكل المناسب.

  • 0
نشر

immutable تعني أنه لا يمكن التعديل على قيمة الغرض و ليس تغيير ما يشير إليه المتغير.

بشكل عام عليك تخيل أن اسم المتغير هو مجرد مؤشر على القيمة، بالتالي عند عملية الإسناد أنت فقط تغير ما يشير إليه هذا الاسم و لا تغير على الغرض نفسه.

تحياتي.

  • 0
نشر

مرحباً عامر,

يرجى طرح الأسئلة الخاصة بالدورات أسفل الفيديو في التعليقات , وطرح الأسئلة العامة هنا .

بالنسبة لسؤالك , عند الحديث عن القيم غير القابلة للتغيير (immutable values) في لغات البرمجة، مثل السلاسل النصية (strings) والأعداد (numbers) في بايثون، يتبادر إلى الذهن أنه لا يمكن تغيير هذه القيم بعد إنشائها. ولكن، قد يكون هناك لبس عندما نتحدث عن الإسناد (assignment) والمرجعية (references) في البرمجة. سوف أقوم بشرح مختصر عن هذا المفهوم

الإسناد والقيم غير القابلة للتغيير

عندما نقوم بإسناد قيمة متغير إلى متغير آخر، نحن لا نغير القيمة الأصلية, بل نقوم بإنشاء مرجع جديد يشير إلى نفس القيمة. هذا يعني أنه يمكننا إسناد قيمة متغير غير قابل للتغيير إلى متغير آخر دون أي مشكلة، لأننا لا نقوم بتغيير القيمة ذاتها، بل نقوم بإنشاء مرجع جديد لنفس القيمة.

مثال توضيحي في بايثون

a = 5  # a يشير إلى القيمة 5
b = a  # b يشير أيضًا إلى القيمة 5

# إذا قمنا بتغيير قيمة b، فإن ذلك لن يؤثر على a
b = 10
print(a)  # سيظل a يشير إلى 5
print(b)  # b يشير إلى 10

 

اما  استخدام القوائم (lists) في بايثون هي mutable (قابلة للتغيير). لكن، إذا قمنا بإسناد قائمة إلى متغير آخر، كلا المتغيرين سيشيران إلى نفس القائمة، وبالتالي أي تغيير في القائمة سيؤثر على كلا المتغيرين.

list1 = [1, 2, 3]
list2 = list1

list2.append(4)
print(list1)  # [1, 2, 3, 4]
print(list2)  # [1, 2, 3, 4]

لذلك لا يوجد تعارض بين إسناد القيم غير القابلة للتغيير إلى متغير آخر وكونها غير قابلة للتغيير. هذا لأن الإسناد لا يغير القيمة الأصلية بل يخلق مرجعا جديدا لهذه القيمة. القيم غير القابلة للتغيير تظل غير قابلة للتغيير، والإسناد فقط ينقل المرجعية من متغير إلى آخر.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...