الكائنات القابلة للتغيير والغير قابلة للتغيير في Python {أمثلة}
ما هو الكائن القابل للتغيير؟
قابل للتغيير في Python يمكن تعريفه على أنه الشيء الذي يمكن أن يتغير أو يعتبر شيئًا قابلاً للتغيير في الطبيعة. قابل للتغيير يعني القدرة على تعديل أو تحرير القيمة.
الكائنات القابلة للتغيير في Python تمكين المبرمجين من الحصول على كائنات يمكنها تغيير قيمهم. يتم استخدامها بشكل عام لتخزين مجموعة من البيانات. يمكن اعتباره شيئًا قد تحور، وتغيرت الحالة الداخلية المطبقة داخل الكائن.
ما هي الكائنات غير القابلة للتغيير؟
كائنات غير قابلة للتغيير في Python يمكن تعريفها بأنها كائنات لا تتغير قيمها وسماتها بمرور الوقت.
تصبح هذه الكائنات دائمة بمجرد إنشائها وتهيئتها، وتشكل جزءًا مهمًا من هياكل البيانات المستخدمة في Python.
Python يستخدم في الأرقام، الصفوفوالسلاسل والمجموعات المجمدة والفئات المعرفة من قبل المستخدم مع بعض الاستثناءات. لا يمكن أن تتغير، وتظل قيمها دائمة بمجرد تهيئتها ومن ثم تسمى غير قابلة للتغيير.
In Python، كل شيء كائن
في مجلة Python لغة برمجة، يمكن اعتبار كل شيء ككائن يشتمل على قوائم وأعداد صحيحة ووظائف. يمكن مقارنة هذه الميزة مع لغات البرمجة الأخرى التي تدعم الكائنات.
يمكن التحقق من هذه الميزة باستخدام Python المترجم كما هو موضح أدناه :-
Python رمز:
print("The following instance is an object:",isinstance(3,object)) print("Another instance for object", isinstance(True, object)) def my_func(): return "guru99" print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
الإخراج:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
علاوة على ذلك، Python يوفر وظيفة مضمنة تسمى id والتي تقوم بإرجاع عنوان الكائن كما هو موجود في ذاكرة الكائن Python لغة برمجة.
Python رمز:
z=200 id(z) print("The id of object is", id(z))
الإخراج:
the id of object is 9795360
في الكود أعلاه، دالة المعرف التي تحتوي على صيغة id(obj) تعطي عنوان obj in Python ذاكرة. هنا، يوجد كائن اسمه z، وله تخصيص 200. ثم يتم تمرير الكائن z إلى دالة id كـ id(z)، ويتم Python يسلم عنوان الكائن كـ 9795360.
الكائنات القابلة للتغيير في Python
في كائن قابل للتغيير، تتغير قيمة الكائن على مدى فترة من الزمن.
في هذا المثال، قمنا بشرح الكائنات القابلة للتغيير في Python، وهذا يستخدم القوائم كتطبيق للكائنات القابلة للتغيير كما هو موضح أدناه: –
Python رمز:
mut_list = [1, 2, 3] print("The list in Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("The list in Python after changing value",mut_list)
الإخراج:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
كما يمكننا أن نرى في المثال المذكور أعلاه، فإن القائمة القابلة للتغيير موجودة في Python كانت لها قيم 1,2,3،1،99. يتم تغيير العنصر الأول من القائمة القابلة للتغيير من XNUMX إلى GuruXNUMX، ولا يقوم بإنشاء كائن جديد عند تهيئة قيمة جديدة.
هنا يمكننا استخدام طريقة id للاستفادة منها. فيما يلي توضيح لاستخدام طريقة id للأشياء القابلة للتغيير كما هو موضح أدناه:
Python رمز:
mut_list = [1, 2, 3] print("The list in Python",mut_list) print("the id of the list is ",id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("The mut list in Python after changing value",mut_list) print("the id of the list is post change in value",id(mut_list))
الناتج
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
يوضح الشكل التالي الكائن القابل للتغيير في Python كما هو موضح ادناه :-
كائنات غير قابلة للتغيير في Python
كائنات غير قابلة للتغيير في Python هي كائنات لا تتغير فيها المثيلات خلال الفترة. المثيلات غير القابلة للتغيير من نوع معين، بمجرد إنشائها، لا تتغير، ويمكن التحقق من ذلك باستخدام طريقة المعرف الخاصة بـ Python.
دعونا نأخذ مثالاً على كائنات من النوع الصحيح Python الذي يوضح مفهوم الكائنات غير القابلة للتغيير في Python كما هو موضح ادناه :-
Python رمز:
a=244 print("the number before change is",a) print("the id of number before change is",id(a)) a=344 print("the number after change is",a) print("the id of number after change is",id(a))
الناتج
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
يمكن أن نرى أعلاه أن هناك تغييرًا في "أ". دعونا ندرس كيفية عمل الآلية:
- لا يوجد أي تغيير في قيمة الكائن عند تهيئة "a" بـ 344.
- وبدلاً من ذلك، يتم إنشاء كائن جديد ويحده "a".
- لن يكون من الممكن الوصول إلى الكائن الآخر الذي تم تعيينه كـ 244.
- استخدم المثال أعلاه كائنًا صحيحًا.
عند a=244، يتم إنشاء كائن جديد وإحالته إلى "a" كما هو موضح أدناه: –
عند استخدام a=344، يظهر كائن جديد تمت الإشارة إليه بـ "a". يوضح الرسم البياني التالي نفس الشيء: -
لذلك، عندما يتم تعيين قيمة جديدة لاسم النوع int، يحدث تغيير في ربط الاسم بكائن آخر. نفس المبدأ يتماشى مع الصفوف، سلاسلو float و Boolean ومن ثم يطلق عليها اسم غير قابل للتغيير.
الآثار المترتبة على مفاتيح القاموس في Python
يمكن تعريف القواميس بأنها المجموعات المرتبة التي تخزن البيانات بتنسيق المفتاح ولا تسمح بالتكرارات. تحتوي القواميس على مفتاح واحد يحتوي على زوج قيمة مطابق له. وهي قابلة للتغيير في الأنواع، ويمكن تغيير محتواها حتى بعد تهيئتها وإنشائها.
في أي لحظة، يشير المفتاح إلى عنصر محدد واحد في كل مرة. مفاتيح القواميس غير قابلة للتغيير.
ولنأخذ السيناريو الافتراضي كما هو موضح أدناه:-
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
المخرجات :- ما سبق Python لا ينتج عن الكود أي مخرجات، وبدلاً من ذلك، فإنه ينشئ خطأ في النوع من النوع غير القابل للتجزئة. هذا وضع افتراضي ولا يستخدم في Python مترجم.
هنا، a
يتم تعريفه على أنه [4,6،XNUMX]، وفي القاموس يتم تعريفه على أنه x. هنا، b
يتم تعريفه على أنه [5,6,7،XNUMX،XNUMX]، وفي القاموس يتم تعريفه على أنه y.
- المفتاح "a" له قيمة [4,6]، ويتم تهيئته أيضًا إلى x.
- يحتوي المفتاح "b" على قيمة [5,6,7] والتي تمت تهيئتها أيضًا إلى "y" في القاموس.
- الآن افترض أن قيمة "أ' تم إلحاقه بالرقمين 5 و7، وهو مفتاح القاموس.
- ثم تم تحور القاموس، وسوف يعطي كليهما "س" "y" كقيم للقاموس أعلاه.
فكر في السيناريو التالي كما هو موضح أعلاه: -
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
وبالتالي، باعتبارها لغة برمجة، Python يجعل مفاتيح القاموس غير قابلة للتغيير، والقواميس هي أنواع بيانات غير قابلة للتغيير.
استثناءات في الثبات
ومع ذلك، Python يوفر استثناءات للثبات، ويمكن ملاحظة هذه الاستثناءات لنوع كائن الصف. يمكن أن يكون الصف عبارة عن مزيج من أنواع الكائنات القابلة للتغيير وغير القابلة للتغيير. ولنأخذ مثالاً لشرح الاستثناءات في الثبات كما هو موضح أدناه: –
Python رمز:
tupexample=([1,1],'guru99') print("the tuple before change",tupexample) print("the id of tuple before change",id(tupexample)) tupexample=([2,2],'guru99') print("the tuple after change",tupexample) print("the id of tuple after change",id(tupexample))
الإخراج:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
يمكنك أن ترى في الكود أعلاه أن العنصر الأول، وهو القائمة، قابل للتغيير، في حين أن الصف غير قابل للتغيير. لا يمكن تغيير قيمة الصف، لكن محتويات القائمة الموجودة داخل الصف يمكن أن تغير قيمته.
ولذلك، فإن هذا يثير استثناءً وهو أن الكائنات غير القابلة للتغيير لا تغير قيمتها، ولكن قيمة المكونات تغير قيمتها.
كائنات قابلة للتغيير مقابل كائنات غير قابلة للتغيير
فيما يلي اختلافات رئيسية بين الكائنات القابلة للتغيير والكائنات غير القابلة للتغيير:
كائن قابل للتغيير | كائن غير قابل للتغيير |
---|---|
يمكن تغيير حالة الكائن بمجرد إنشائه | لا يمكن تغيير حالة الكائن بمجرد إنشائه |
لا تعتبر الكائنات القابلة للتغيير آمنة لمؤشر الترابط بطبيعتها. | تعتبر الكائنات غير القابلة للتغيير آمنة لمؤشر الترابط بطبيعتها. |
لا يتم جعل الكائنات القابلة للتغيير نهائية، وبالتالي يمكن للمبرمج الاستمرار في تغيير الكائنات القابلة للتغيير واستخدام نفس الكائنات. | من المهم جعل الفئات نهائية عند إنشاء كائن غير قابل للتغيير |
Python أنواع البيانات غير القابلة للتغيير
مبوبة | تفسير | غير قابل للتغيير أم لا |
---|---|---|
منطقي | قيمة منطقية | غير قابل للتغيير |
الباحث | قيمة عدد صحيح (يمكن أن يكون الحجم تعسفيًا) | غير قابل للتغيير |
تطفو | رقم النقطة العائمة | غير قابل للتغيير |
قائمة | تسلسل الأشياء ذات الطبيعة المتغيرة | متقلب |
الصف | تسلسل الأشياء ذات الطبيعة غير القابلة للتغيير | غير قابل للتغيير |
شارع | سلسلة أحرف | غير قابل للتغيير |
بكج | مجموعة من الكائنات المتميزة ذات الطبيعة غير المنظمة | متقلب |
المجمدة | تعيين فئة ذات طبيعة ثابتة | غير قابل للتغيير |
قاموس | القاموس أو رسم الخرائط النقابي | متقلب |