متغیر (Variable) محلی از حافظه است که برای نگهداری داده یا مقداری استفاده می شود. هر یک از متغیرها دارای یک نام منحصر به فرد هستند و به محل های متفاوتی از حافظه اصلی اشاره می کنند. نامگذاری متغیرها از قواعد نامگذاری شناسه ها تبعیت می کند. در زبان هایی مانند C و جاوا باید پیش از استفاده، متغیر را اعلان کرده باشیم. اعلان یک متغیر شامل تعیین نوع و تعیین نام برای آن متغیر می شود. اما در پایتون تعیین نوع متغیر لازم نیست بلکه در زمان اجرا، نوع متغیر بر حسب مقدار اختصاص داده شده به آن تعیین می شود.

قطعه کد ۱ و ۲ به ترتیب تعریف متغیرهای نوع عدد صحیح، ممیز شناور (اعشاری) و رشته را در زبان های C و پایتون نشان می دهند. متغیرهای int_type و float_type و string_type در قطعه کد ۲ در زمان اجرا تعیین نوع می شود که بر اساس نوع مقداری است که به آنها اختصاص داده شده است.

یعنی چون به متغیر integer_type عدد صحیح انتساب داده شده پس در این لحظه از اجرا نوع آن int خواهد بود. چون به متغیر float_type عدد ممیز شناور (اعشاری) انتساب داده شده پس در این لحظه از اجرا نوع آن float خواهد بود و چون به متغیر string_type رشته انتساب داده شده پس در این لحظه از اجرا نوع آن str خواهد بود.

 پایتون یک زبان نوع پویا (Dynamic Type) است و نیازی به تعیین نوع متیغر در زمان تعریف آن نیست. بنابراین می توان در خطوط بعدی درون کد، با انتساب یک مقدار از نوع دیگر، نوع آن متغیر نیز به کلی تغییر کند. به طور مثال در خطوط بعدی می توان به متغیر integer_type مقدار رشته و به متغیر string_type مقدار عدد ممیز شناور اختصاص داد. این نوع اعمال در زبان هایی مانند C و جاوا باعث بروز خطای زمان کامپایل می شود، چون این زبان ها از نوع زبان های نوع ایستا (Static Type) هستند. بنابراین برای ایجاد یک پایتون تنها لازم است با عملگر انتساب (عملگر =) به متغیر مقدار داده شود و بر اساس نوع مقدار انتساب داده شده، متغیر نیز تعیین نوع می شود. نام متغیرها جز شناسه ها در پایتون هستند و نامگذاری آنها باید مطابق با قوانین نامگذاری شناسه ها باشد.

در قطعه کد ۳ ابتدا متغیر variable1 را با انتساب عدد صحیح ۱۰ ایجاد می کنیم. در این زمان نوع متغیر نیز int است. سپس به متغیر مقدار رشته Hello World داده می شود و نوع آن به str تغییر می کند. سپس به متغیر مقدار False داده می شود و نوع آن به bool تغییر خواهد کرد و در نهایت با انتساب عدد ۱۲.۵ نوع متغیر به float تغییر خواهد کرد. همچنین از تابع ()type می توان نوع شی (Object) یا متغیر را پیدا کرد.

انواع داده در پایتون

پایتون از انواع داده پایه عدد صحیح (Integer)، عدد ممیز شناور (Float)، عدد مختلط (Complex)، رشته (String) و Boolean پشتیبانی می کنند. همچنین پایتون از ساختمان داده های (Data Structures) لیست (List)، دیکشنری (Dictionary) و تاپل (Tuple) پشتیبانی می کند. پایتون انواع داده های خود را به سه دسته کلی زیر تقسیم کرده است. این انواع داده را Built-in Data Type نیز می گویند و برخی از آنها مانند اعداد صحصح، اعداد اعشاری و رشته ها در تمامی زبان های برنامه سازی وجود دارند و برخی دیگر مانند لیست ها، دیکشنری ها و تاپل ها مخصوص خود پایتون هستند.

۱ – نوع داده برای تست درستی یا نادرستی

نوع bool شامل True یا False است که به درست و نادرست اشاره دارد. در زبان هایی مانند C عدد صفر به معنی False و عدد غیر از صفر به True اشاره دارد. در پایتون علاوه بر اینکه می توان از True و False برای درستی و نادرستی استفاده کرد، از اعداد 0 و 0.0 و 0j و 0L نیز به عنوان نتیجه False یا نادرست در کنترل شرطی if, elif و حلقه کنترل while استفاده کرد ولی تنها متغیرهایی از نوع bool در نظر گرفته می شوند که به آنها True یا False انتساب داده شود.

۲ – نوع داده عددی

دسته بندی نوع عددی شامل چهار نوع int, float, long و complex می شود. حداقل و حداکثر مقدار قابل قبول آن در پلتفرهای مختلف متفاوت است. برای پیدا کردن حداقل و حداکثر مقدار قابل قبول برای این نوع می توان ماژول sys کمک گرفت. نوع دیگر اعداد صحیح long int است و مقدار قابل قبول آن نامحدود است.

نوع عددی دیگر float است که برای ذخیره سازی اعداد با ممیز شناور (یا اعداد اعشاری) استفاده می شود. با استفاده از ماژول sys می توان از طریق sys.float_info اطلاعاتی را پیدا کرد. آخرین نوع عددی، اعداد اعشاری هستند که از دو بخش حقیقی (Read) و موهومی (Imaginary) تشکیل شده اند. قطعه کد ۱ مثالی از تعریف عدد مختلط که درون متغیر comp ذخیره شده است را نشان می دهد. نوع متغیر comp توسط تابع ()type چاپ شده است و همچنین در خطوط بعدی توسط comp.real و comp.imag به ترتیب بخش های حقیقی و موهومی عدد مختلط چاپ شده اند.

۳ – انوع داده دنباله ای یا متوالی

انواع داده های متوالی (یا دنباله ای – Sequence) به جز رشته ها، لیست ها، دیشکنری ها و تاپل ها شامل سه نوع آریه های بایتی (Bytearrays)، بافرها (Buffers)، یونیکدها (Unicodes) و xrange ها نیز می شوند. تمامی انواع داده متوالی، شامل توالی از کاراکترها هستند. رشته ها توالی از کاراکترها هستند که می توانند شامل اعدد، حروف، فضای خالی و کاراکترهای خاص باشند. برای تعیین یک رشته باید آنرا میان Single Quotes و Double Quotes قرار داد. به طور مثال ‘Hello World’ و “Hello Word” هر دو به رشته Hello Word اشاره می کنند.

رشته های یونیکدی (Unicode Strings) همانند رشته های معمولی هستند ولی فرمت تعریف آنها به این صورت است که کاراکتر u قبل از اولین Single Quotes یا Double Quotes قرار می گیرد. به عنوان مثال ‘u’Hello World و “u”Hello World هر دو رشته یونیکدی هستند. در قطعه کد ۲ دو متغیر از نوع رشته (str) و رشته یونیکدی را تعریف شده است.

لیست ها ساختاری شبیه به آرایه ها در زبان C دارند. هر لیست شامل عناصری است که درون براکت های باز و بسته قرار می گیرند. به عنوان مثال [1,2,3,4] یک لیست شامل چهار عنصر عدد صحیح است. اما لیست ها با آرایه های C تفاوت دارند. در آرایه های C تمامی عناصر درون آرایه هم نوع هستند ولی لیست های پایتون می توانند شامل عناصر غیر هم نوع نیز باشند. به عنوان مثال لیست می تواند به صورت [1, 2.3 , “Hello World”] باشد.

تاپل ها نیز همانند لیست ها متشکل از مجموعه ای از عناصر هستند که توسط کاما (ویرگول) از هم جدا می شوند ولی به جای اینکه درون براکت های باز و بسته باشند، میان پرانتزهای باز و بسته قرار می گیرند. به طر مثال (1,2,3,4) یک تاپل شامل چهار عنصر عددی است. همانند لیست ها، عناصر تاپل نیز می توانند از انواع مختلف دیگر باشند.

دیکشنری ها یکی دیگر از انواع داده ها در پایتون هستند که به آرایه های انجمنی (Associative Array) در زبان هایی مانند جاوا و پی اچ پی شباهت دارند. در لیست ها و تاپل ها اندیس های عناصر، عددی هستند که اولین عنصر درون لیست و تاپل عدد صفر و دومین عنصر اندیس ۱ و الی آخر.

اما در دیکشنری ها اندیس ها می توانند غیر عددی نیز باشند. قطعه کد ۳ یک نمونه از ایجاد دیشکنری را نشان می دهد که در آن اندیس ‘id’ و ‘name’ و ‘family’ همگی رشته هستند که به عناصر عددی و رشته ای اشاراه می کنند. عناصر درون دیشکنری ها نیز می توانند از هر نوعی باشند. اندیس ها و عناصر دیکشنری درون آکولادهای باز و بسته قرار می گیرند و میان اندیس و عنصر یک علامت : وجود دارد.