سرفصل‌های آموزشی
آموزش پایتون
آشنایی با مفاهیم Mutable و Immutable بودن برخی دیتا تایپ‌ها در پایتون

آشنایی با مفاهیم Mutable و Immutable بودن برخی دیتا تایپ‌ها در پایتون

پیش از شروع و به منظور درک بهتر مفاهیم Mutable (تغییرپذیری) و Immutable (تغییرناپذیری)، مثالی را مد نظر قرار می‌دهیم بدین صورت که فرض کنید یک تکه کاغذ، مداد، پاک‌کن و یک خودکار در اختیار داریم و می‌خواهیم متنی روی کاغذ یادداشت کنیم. بدیهی است که در صورت استفاده از خودکار برای نوشتن دیگر نمی‌توانیم متن نوشته‌شده را تغییر دهیم اما این در حالی است با به‌کارگیری مداد امکان اِعمال تغییر در متن مربوطه را با استفاده از پاک‌کن داریم.

با مد نظر قرار دادن این مثال، لازم به یادآوری است که خاصیت متن‌های نوشته‌شده با مداد و خودکار در دیتا تایپ‌های موجود در زبان پایتون نیز وجود دارد؛ به عبارت دیگر، بعضی از انواع داده‌ها تغییرپذیر و برخی دیگر تغییرناپذیرند به طوری که در زبان پایتون نمی‌توانیم مثلاً یک شیئ از نوع عددی یا استرینگ را تغییر دهیم و مقدار عدد 2 همیشه برابر با 2 است و تنها کاری که می‌توانیم انجام دهیم این است که عدد مذکور را به متغیرهایی با نام‌های متفاوت ارجاع دهیم بدین صورت که مثلاً عدد مد نظر را به متغیری با شناسه‌ای همچون num1 منتسب کنیم و یا آن را به متغیر دیگری همچون num2 نسبت دهیم.

در زبان برنامه‌نویسی پایتون به آبجکت‌هایی که دارای چنین خاصیتی هستند به اصطلاح Immutable یا «تغییرناپذیر» گفته می‌شود و در مقابل دیتا تایپ‌هایی قرار می‌گیرند که اصطلاحاً Mutable یا «تغییرپذیر» هستند به طوری که پس از ساخت چنین آبجکت‌هایی می‌توانیم در صورت نیاز مقادیر منتسب به آن‌ها را تغییر دهیم.

به طور مثال، دیتا تایپی همچون لیست در زبان برنامه‌نویسی پایتون در دستۀ آبجکت‌های تغییرپذیر قرار می‌گیرد و در آموزش‌های قبل دیدیم که چگونه می‌توان با استفاده از فانکشن‌هایی نظیر ()append و ()insert یا ()remove یکسری آبجکت جدید به لیست اضافه و یا از آن حذف کرد که بدین ترتیب منجر به ایجاد تغییر در آبجکت مذکور می‌شوند اما در برخی مواقع نیاز داریم تا آبجکتی از جنس لیست داشته باشیم به طوری که محتوای آن تغییرناپذیر باشد که آبجکت‌هایی با ویژگی‌های مذکور در زبان برنامه‌نویسی پایتون تحت عنوان tuple معرفی شده‌اند (در آموزش‌های آتی با دیتا تایپ تاپل آشنا شده و به بررسی تفاوت‌های آن با دیتا تایپ لیست می‌پردازیم.)

online-support-icon