آشنایی با مفهوم تغییر پذیر و تغییر ناپذیر بودن یک شئ در زبان پایتون


فرض کنید که شما یک تکه کاغذ و یک مداد و پاک کن، به همراه یک خودکار در اختیار دارید و می خواهید متنی را روی این کاغذ یادداشت کنید. شما می دانید که اگر با خودکار روی کاغذ بنویسید دیگر امکان تغییر در متن نوشته شده را ندارید، در حالی که اگر با استفاده از مداد شروع به یادداشت کردن کنید، هر زمان که بخواهید می توانید با استفاده از پاک کن متن نوشته ی خود را پاک کرده و تغییر دهید.

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

در زبان برنامه نویسی پایتون به اشیائی که دارای این خاصیت هستند Immutable یا «تغییر ناپذیر» گفته می شود. در مقابل، انواع داده یی Mutable یا «تغییر پذیر» قرار دارند و همان طور که از نام آن ها پیدا است، پس از ساخت شیئی از این نوع، مقدار این شئ در آینده قابل تغییر است.

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

با این حال گاهی نیاز داریم تا لیستی ایجاد کنیم که محتویات آن غیر قابل تغییر باشند. چنین لیست هایی در زبان برنامه نویسی پایتون با نوع داده ی تاپل (Tuple) معرفی شده اند که مثل نوع داده ی list است با این تفاوت که تغییرپذیر نیست. برای تعریف یک تاپل، به صورت زیر عمل می کنیم:

>>> colorTuple = ('red', 'green', 'blue', 'yellow')
>>> type(colorTuple)
<class 'tuple'>

همان طور که می بینید متغیر colorTuple از نوع تاپل است و درست همانند یک لیست تعریف شده است با این تفاوت که اعضای آن به جای قرار گرفتن در میان کروشه های باز و بسته [ ] در میان پرانتزهای باز و بسته () قرار گرفته اند. همان طور که گفتیم، اشیائی از نوع تاپل غیر قابل تغییر هستند بنابراین فانکشن هایی مانند ()sort()، append، یا ()remove روی آن ها به هیچ وجه کار نمی کنند.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
reza norouzi
reza norouzi
سلام
در سوال اول آزمون این بخش با توجه به توضیحات موجود در متن آموزش ، اشتباهی رخ داده .
لیست ها قابل تغییر هستند ولی در سوال اول غیرقابل تغییر مشخص شده
لطفا بررسی کنید
nafisse
nafisse
سلام
دوره آموزشی سما خیلی خوب هست و لطفا ان را ادامه دهید.
mohbakh
mohbakh
با سلام و خسته نباشید
و تشکر بابت این دوره خوب و اموزش بهترتون
فقط یه سوالی ؟ این دوره رو ادامه نمیدین
باز هم تشکر و ارزوی موفقیت برای شما
ادمین سایت
ادمین سایت
با سلام خدمت شما کاربر گرامی
ادامه ی دوره در دست تالیف است و به زودی آموزش های بعدی منتشر خواهند شد.

در پاسخ به

علی
علی
ما به سبک آموزش های شما عادت کردیم
لطفاً در ادامه این آموزش عجله بفرمایید
با تشکر از همه زحماتتون.

در پاسخ به