Python Question!

لدي سؤال..

عند كتابة:

x = y = z = 1

هل كلاً من x, y , z يُشير إلى نفس الموقع في الذاكرة وهو القيمة 1 ؟ أم لكل متغير موقع خاص به يشير إليه ؟


عند كتابة:

x = y = z = 1 

فإن جميع المتغيرات x وy وz ستشير إلى نفس المكان في الذاكرة، وهذا المكان يحمل القيمة 1. يعني ذلك أنهم جميعًا يشتركون في نفس المكان في الذاكرة وبالتالي يكون لديهم نفس القيمة 1. ولذلك لو حاولت طباعة أي منهم، سيكون الأمر ذاته:

x = y = z = 1 


print(x) // 1
print(y) // 1
print(z) // 1

يدعى هذا السياق بالتعيين المتعدد (Multiple Assignment) أو التعيين المتتابع (Sequential Assignment). أين يتم تعيين نفس القيمة (1 في هذه الحالة) لعدة متغيرات في خط واحد، وهذه المتغيرات ستشير جميعها إلى نفس القيمة والمكان في الذاكرة.

ماذا لو تم تغيير قيمة y مثلاً ؟ لن تؤثر على باقي القيم وستشير الى موقع مختلف في الذاكرة.. صحيح ؟

ماذا لو تم تغيير قيمة y مثلاً ؟ لن تؤثر على باقي القيم وستشير الى موقع مختلف في الذاكرة.. صحيح ؟

نعم بالضبط. جرب ذلك:

x = y = z = 1 
print(y) // 1
y = 4 
print(y) // 4