آشنایی با دیتا تایپ تاپل در زبان برنامهنویسی پایتون
در آموزشهای گذشته با دیتا تایپ لیست در زبان برنامهنویسی پایتون آشنا شدیم و گفتیم که دیتا تایپ تاپل نیز در این زبان قابلیتهایی همچون دیتا تایپ لیست دارا است و به منظور ذخیرۀ مجموعهای از دادههای غیرهمنوع مورد استفاده قرار میگیرد با این تفاوت که محتوای آبجکتی از جنس تاپل را نمیتوان تغییر داد. در واقع، دیتا تایپ تاپل را میتوان به منظور ذخیرۀ دیتایی با سطح دسترسی به اصطلاح Read-only مورد استفاده قرار داد؛ به عبارت بهتر، ذخیرۀ دیتا با بهکارگیری دیتا تایپ تاپل منجر بدین میشود تا سطح دسترسی به دیتای مد نظر محدود شده و بدین ترتیب امکان تغییر، حذف یا افزودن دیتای جدید در سایر نقاط برنامه وجود نداشته باشد.
اولین و سادهترین تفاوت دیتا تایپ تاپل نسبت به نوع دادۀ لیست این است که به منظور تعریف آبجکتهایی از جنس تاپل به جای علائم [ ]
از علائم ()
استفاده میکنیم که برای آشنایی بیشتر با نحوۀ ساخت آبجکتی از جنس تاپل، مثال زیر را مد نظر قرار میدهیم:
>>> colorTuple = ("red", "green", "blue", "yellow")
در دستور فوق، متغیری به نام colorTuple
از جنس تاپل تعریف کردهایم با این تفاوت که اعضای آن به جای قرار گرفتن در میان علائم [ ]
در میان ()
قرار گرفتهاند که برای حصول اطمینان از نوع دادۀ مد نظر نیز فانکشن از پیش تعریفشدۀ ()type
را با آرگومان ورودی colorTuple
فراخوانی میکنیم:
>>> type(colorTuple)
<class 'tuple'>
همانطور که ملاحظه میشود، اجرای دستور فوق منجر به ریترن شدن کلاس مربوط به نوع آبجکت مد نظر تحت عنوان tuple
در خروجی شده است. حال در ادامۀ این آموزش قصد داریم تا به تشریح ویژگیهای این دیتا تایپ پرداخته و برخی فانکشنهای به اصطلاح Built-in در زبان پایتون را به منظور اِعمال روی آبجکتهایی از جنس تاپل معرفی کنیم.
نحوۀ دسترسی به محتوای تاپل
نحوۀ دسترسی به محتوای آبجکتی از جنس تاپل همانند دیتا تایپ لیست میباشد که جهت کسب اطلاعات بیشتر میتوانید به آموزش آشنایی نحوۀ دسترسی به محتوای لیست در زبان برنامهنویسی پایتون مراجعه کنید. همچنین همانطور که در ابتدای آموزش اشاره کردیم، دیتا تایپ تاپل تغییرناپذیر بوده و از همین روی فراخوانی فانکشنهای از پیش تعریفشدهای همچون ()sort
و ()append
یا ()remove
در آنها هیچ تغییری اِعمال نمیکنند.
نحوۀ ویرایش محتوای تاپل
در این بخش قصد داریم تا به بررسی این موضوع بپردازیم که منظور از تغییرناپذیر بودن دیتا تایپ تاپل چیست و چرا نمیتوان محتوای آن را تغییر داد که برای درک بهتر این مفهوم در مثال زیر سعی کردهایم تا اِلِمان اول از آبجکت مربوط به مثال قبل را تغییر دهیم:
>>> colorTuple[0] = "orange"
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
colorTuple[0]='orange'
TypeError: 'tuple' object does not support item assignment
در کد فوق، قصد داریم تا مقدار اِلِمان اول از آبجکت colorTuple
را تغییر دهیم و از آنجایی که اندیسگذاری آبجکتهایی از جنس تاپل و لیست از عدد صفر شروع میشود، به منظور دسترسی به اِلِمان اول عدد 0 را به کار بردهایم که در نتیجۀ اجرای این دستور با اروری مواجه میشویم مبنی بر اینکه آبجکتی از جنس تاپل تغییرناپذیر بوده و نمیتوان مقدار منتسب به آن را تغییر داد اما در عین حال میتوان آبجکتی جدید از جنس تاپل را با استفاده از به اصطلاح Concate (الحاق) دو یا چند آبجکت تاپل دیگر ایجاد کرد که برای این منظور کد زیر را مد نظر قرار میدهیم:
>>> tupleOne = ("red", "green", "blue", "yellow")
>>> tupleTwo = ("orange", "pink")
>>> newColorTuple = tupleOne + tupleTwo
>>> newColorTuple
('red', 'green', 'blue', 'yellow', 'orange', 'pink')
در کد فوق، ابتدا آبجکتی از جنس تاپل تحت عنوان tupleOne
تعریف کرده و یکسری اِلِمان را به آن منتسب کردهایم و در ادامه آبجکتی دیگر از جنس تاپل تحت عنوان tupleTwo
تعریف کردهایم که دو اِلِمان دیگر از جنس استرینگ را به این آبجکت اختصاص دادهایم. حال در صورتی که بخواهیم تا مقادیر اِلِمانهای هر دو تاپل را با هم کانکت کنیم، از عملگر +
استفاده میکنیم و همانطور که ملاحظه میکنید، عملگر +
را به منظور الحاق مقادیر اِلِمانهای دو تاپل tupleOne
و tupleTwo
به کار گرفتهایم و در ادامه گفتهایم آبجکت تاپل جدید در متغیری تحت عنوان newColorTuple
نگهداری شود.
در واقع، نحوۀ کار این عملگر در الحاق دو آبجکت از جنس تاپل بدین صورت است که اِلِمانهای مربوط به آبجکت تاپل دوم را به انتهای اِلِمانهای مربوط به آبجکت اول اضافه کرده و آبجکتی جدید از جنس تاپل ایجاد میکند و نهایتاً در مثال فوق، مقادیر اِلِمانهای مربوط به تاپل جدید به متغیر newColorTuple
منتسب میشود و در سطر آخر نیز میبینیم که محتوای ذخیرهشده در آبجکت تاپل جدید برابر با نتیجۀ حاصل از الحاق اِلِمانهای دو تاپل مذکور میباشد.
به طور کلی، در این آموزش به معرفی دیتا تایپ تاپل پرداخته و گفتیم که بر خلاف دیتا تایپ لیست، به منظور ذخیرۀ دیتایی بدون نیاز به اِعمال تغییر روی آن مورد استفاده قرار میگیرد که از جمله تفاوتهای دیگر این دو دیتا تایپ میتوان گفت که استفاده از دیتا تایپ تاپل به منظور ذخیره و نگهداری دیتا در برنامههای بزرگ منجر به افزایش سرعت در اجرای سورسکد مربوطه میشود به علاوه اینکه آبجکتهایی از جنس تاپل را میتوان به عنوان مقادیر کلید در دیتا تایپهای دیکشنری مورد استفاده قرار داد چرا که مقادیر کلید در این نوع دیتا تایپ میباید به اصطلاح Immutable باشند و از همین روی آبجکتهایی از نوع دادۀ تاپل کاندیدای خوبی برای این سناریو هستند (جهت کسب اطلاعات بیشتر در رابطه با نوع دادۀ دیکشنری میتوانید به آموزش آشنایی با دیتا تایپ دیکشنری در زبان برنامهنویسی پایتون مراجعه نمایید.)