پیش از شروع و به منظور درک بهتر مفاهیم Mutable (تغییرپذیری) و Immutable (تغییرناپذیری)، مثالی را مد نظر قرار میدهیم بدین صورت که فرض کنید یک تکه کاغذ، مداد، پاککن و یک خودکار در اختیار داریم و میخواهیم متنی روی کاغذ یادداشت کنیم. بدیهی است که در صورت استفاده از خودکار برای نوشتن دیگر نمیتوانیم متن نوشتهشده را تغییر دهیم اما این در حالی است با بهکارگیری مداد امکان اِعمال تغییر در متن مربوطه را با استفاده از پاککن داریم.
با مد نظر قرار دادن این مثال، لازم به یادآوری است که خاصیت متنهای نوشتهشده با مداد و خودکار در دیتا تایپهای موجود در زبان پایتون نیز وجود دارد؛ به عبارت دیگر، بعضی از انواع دادهها تغییرپذیر و برخی دیگر تغییرناپذیرند به طوری که در زبان پایتون نمیتوانیم مثلاً یک شیئ از نوع عددی یا استرینگ را تغییر دهیم و مقدار عدد 2 همیشه برابر با 2 است و تنها کاری که میتوانیم انجام دهیم این است که عدد مذکور را به متغیرهایی با نامهای متفاوت ارجاع دهیم بدین صورت که مثلاً عدد مد نظر را به متغیری با شناسهای همچون num1
منتسب کنیم و یا آن را به متغیر دیگری همچون num2
نسبت دهیم.
در زبان برنامهنویسی پایتون به آبجکتهایی که دارای چنین خاصیتی هستند به اصطلاح Immutable یا «تغییرناپذیر» گفته میشود و در مقابل دیتا تایپهایی قرار میگیرند که اصطلاحاً Mutable یا «تغییرپذیر» هستند به طوری که پس از ساخت چنین آبجکتهایی میتوانیم در صورت نیاز مقادیر منتسب به آنها را تغییر دهیم.
به طور مثال، دیتا تایپی همچون لیست در زبان برنامهنویسی پایتون در دستۀ آبجکتهای تغییرپذیر قرار میگیرد و در آموزشهای قبل دیدیم که چگونه میتوان با استفاده از فانکشنهایی نظیر ()append
و ()insert
یا ()remove
یکسری آبجکت جدید به لیست اضافه و یا از آن حذف کرد که بدین ترتیب منجر به ایجاد تغییر در آبجکت مذکور میشوند اما در برخی مواقع نیاز داریم تا آبجکتی از جنس لیست داشته باشیم به طوری که محتوای آن تغییرناپذیر باشد که آبجکتهایی با ویژگیهای مذکور در زبان برنامهنویسی پایتون تحت عنوان tuple معرفی شدهاند (در آموزشهای آتی با دیتا تایپ تاپل آشنا شده و به بررسی تفاوتهای آن با دیتا تایپ لیست میپردازیم.)