متغیرها مانند ظرفهایی هستند که برای ذخیرهسازی موقت دادهها استفاده میشوند. تعریف متغیر در پایتون بسیار ساده است. در این آموزش با متغیر پایتون و انواع داده python آشنا خواهیم شد.
در یک نگاه تخصصیتر، متغیر (Variable) یک فضای رزرو شده در حافظه است که مقادیر انتساب داده شده به خود را درون آن بخش از حافظه نگهداری میکند. در زمان ایجاد متغیر، بخشی از حافظه به آن تخصیص داده شده و اشغال میشود.
در یکسری از زبانهای برنامه نویسی باید در هنگام تعریف یک متغیر، نوع آن را نیز مشخص کنیم.
یکی از خوبیهای (و شاید بدیهای) زبان برنامهنویسی پایتون این است که نیازی به تعریف نوع داده متغیر ندارد. یعنی چه بخواهیم یک عدد را درون متغیر قرار دهیم و چه یک رشته متنی، در هر صورت کافی است نام متغیر را نوشته و عملیات انتساب را انجام دهیم!
در این مقاله ابتدا به نحوه تعریف و قوانین نام گذاری متغیرها در پایتون پرداخته و سپس نوع دادههای رایج را بررسی میکنیم. سپس با چند ترفند کار با متغیر آشنا میشویم. در انتها نیز در مورد ثابتها در پایتون صحبت خواهیم کرد.
ایجاد متغیر در پایتون
هر زمان که یک مقدار را به متغیری انتساب دهیم، به صورت خودکار آن متغیر در برنامه ایجاد میشود.
انتساب متغیر پایتون سه بخش اصلی دارد:
- نام متغیر
- عملگر انتساب
- مقدار متغیر
در مورد نحوه نامگذاری متغیرها در بخش بعدی صحبت میکنم. عملگر (operator) انتساب همان علامت مساوی (=
) است. با گذاشتن عملگر مساوی در جلوی نام متغیر، میتوانیم مقدار جدیدی به آن تخصیص دهیم.
در قطعه کد زیر چند متغیر مختلف تعریف کرده و مقادیر دلخواهی به آنها انتساب دادهایم.
name = "Elina"
age = 25
score = 86.7
در این کد، سه متغیر name و age و score داریم که به ترتیب دارای مقادیر elina و 25 و 86.7 خواهند بود.
با تابع پرینت در پایتون میتوانیم مقادیر این متغیرها را در خروجی چاپ کنیم:
print(name)
print(age)
print(score)
خروجی پرینت متغیرها به صورت زیر میشود:
تغییر متغیر پایتون
در طول اجرای برنامه، هر زمان خواستیم مقدار یک متغیر را تغییر دهیم، فقط کافی است مقدار جدید را به آن انتساب دهیم. به همین راحتی!
در قطعه کد زیر، یک متغیر ایجاد کرده و سپس آن را چاپ کردم. سپس مقدارش را به توان 2 رسانده و دوباره در خروجی چاپ میکنم.
num = 17
print(num)
num = num ** 2
print(num)
پس از اجرای کد، ابتدا عدد اولی چاپ شده و سپس توان دوم آن چاپ میشود.
17 289
انتساب همزمان چند متغیر
اگر در برنامه خود میخواهید چند متغیر را به صورت همزمان مقداردهی کنید، میتوانید از روش تخصیص چندین مقدار به چندین متغیر استفاده کنید.
برای انتساب همزمان دو حالت پیش رو داریم:
حالت اول این است که مقدار تمام متغیرها با یکدیگر برابر است.
برای این که یک مقدار را به چند متغیر در پایتون به صورت همزمان انتساب دهیم، باید پس از اولین عملگر مساوی نام متغیرهای بعدی را نوشته و پس از آخرین عملگر، مقدار آنها را بنویسیم.
برای درک بهتر، به مثال زیر توجه کنید:
a = b = c = 157
در این کد سه متغیر a و b و c دارای مقدار یکسان 157 میشوند.
در حالت دوم ما چندین متغیر با مقادیر مختلف داریم. برای این کار به صورت زیر عمل میکنیم.
name, code, car = "Omid", 6257, "BMW X7"
در این حالت، سه متغیر نام و کد و ماشین تعریف شده و هر کدام حاوی مقدار مرتبط با خود خواهند بود.
قواعد نامگذاری متغیر پایتون
نام متغیرها در پایتون از چهار قاعده ساده و کلی پیروی میکنند که باید آنها را رعایت کنیم. اگر این قوانین را رعایت نکنیم، نام متغیر صحیح نبوده و با خطا مواجه خواهیم شد.
این 4 قانون عبارتاند از:
- حروف مجاز برای تعریف نام متغیر در پایتون فقط حروف الفبا (کوچک و بزرگ) به علاوه علامت زیر خط (
_
) است. - نام متغیر باید با یک حرف انگلیسی یا علامت underscore (
_
) آغاز شود. - ابتدای نام متغیر نمیتواند عدد باشد!
- نام متغیرهای پایتون حساس به حروف کوچک و بزرگ یا اصطلاحاً Case Sensitive است. بنابراین متغیرهای name و Name و NAME سه متغیر متفاوت هستند.
در قطعه کد زیر چند نوع مختلف و صحیح نوشتهام:
myvar = "Test"
myvar2 = "Test"
my_var = "Test"
_my_var = "Test"
myVar = "Test"
MYVAR = "Test"
پیشنهاد میکنم نامهایی که برای متغیرهای خود انتخاب میکنید تا حد امکان معنادار باشند. یعنی استفاده از name به جای n حرفهایتر خواهد بود.
انواع متغیر در پایتون
تقریباً هر چیزی که به ذهنتان برسد را میتوانیم به شیوهای در پایتون نمایش دهیم. به طور پیشفرض نوعهای دادهای پر استفاده در پایتون تعریف شدهاند.
اگر دادهای در نوع دیگر لازم داشته باشیم، یا باید آن را خودمان ایجاد کنیم و یا به دنبال کتابخانههای مرتبط بگردیم.
مهمترین انواع داده در پایتون عبارتاند از:
- عدد (صحیح، حقیقی و مختلط)
- رشته متنی (string)
- لیست (list)
- تاپل (tuple)
- دیکشنری (dictionary)
- شئ (object)
تعریف عدد در پایتون
متغیر عددی در پایتون هم مانند سایر متغیرها تعریف میشود. ما میتوانیم چهار نوع عددی زیر را تعریف کرده و به متغیرها انتساب دهیم:
- اعداد صحیح و علامتدار (integer یا به اختصار int)
- اعداد صحیح بسیار بزرگ (long) که با حرف «اِل انگلیسی» در ابتدای آنها مشخص میشوند.
- اعداد حقیقی ممیز شناور (float)
- اعداد مختلف ریاضی (complex)
x = 5
y = 5.0
z = 5 + 3j
نوع هر متغیر را به کمک تابع type()
بررسی میکنیم:
print(type(x)) // <class 'int'>
print(type(y)) // <class 'float'>
print(type(z)) // <class 'complex'>
همانطور که میبینید نوع هر سه متغیر با یکدیگر متفاوت است ولی همه عدد هستند. برای اینکه با این سه نوع عدد بیشتر آشنا شوید و توابع کار با اعداد را یاد بگیرید، آموزش عدد در پایتون را ببینید.
ترفندهای کار با متغیر پایتون
در این بخش ۲ ترفند یا روش برای انجام کارهای حرفهایتر با متغیرهای پایتون را بررسی میکنیم. استفاده به موقع و درست از این روشها وابسته به خلاقیت است. هر چه بیشتر با یک زبان برنامهنویسی کار کنید، مهارت بیشتری در استفاده از امکانات آن پیدا خواهید کرد.
متغیرهای سراسری پایتون
یک برنامه ممکن است از بخشها و توابع مختلفی تشکیل شود. اگر آموزش تابع در پایتون را دیده باشید میدانید که به کمک توابع، برنامه ما توسعهپذیرتر و مرتبتر خواهد شد.
هر تابع یا کلاسی که تعریف میکنیم دارای یک محدوده است. این محدوده از ابتدای تعریف آن شروع شده و تا پایان تورفتگیهایش ادامه خواهد داشت.
به این بخش اصطلاحاً محدوده (scope) گفته میشود. هر متغیری که در یک اسکوپ تعریف شود، صرفاً در همان محدوده قابل استفاده و دسترس خواهد بود.
گاهی لازم داریم تا یک متغیر را به صورت عمومی (سرتاسری) تعریف کنیم تا در تمام زیر محدودهها و توابع آن فایل در دسترس باشد.
برای این کار کافی است متغیر را در بیرونیترین محدوده برنامه تعریف کنیم. معمولاً بیرونیترین بخش همان ابتدای کدهای برنامه است.
level = "awesome"
def printLevel(): print("SabzDanesh is " + level)
printLevel()
وقتی درون محدوده تابعی یک متغیر را تعریف میکنیم، به طور پیشفرض آن متغیر به صورت محلی و در همان تابع در دسترس خواهد بود.
برای این که درون یک محدوده خاص متغیری سرتاسری تعریف کنیم، از کلیدواژه global استفاده میکنیم.
با نوشتن کلمه کلیدی global به مفسر پایتون میفهمانیم که باید با این متغیر به عنوان یک متغیر سراسری برخورد کرده و در بیرون از محدوده هم معتبر باشد.
در کد زیر متغیر level برای اولین بار درون getLevel()
ولی به صورت global تعریف شده است. به همین دلیل در آخرین خط میتوانیم از آن استفاده کنیم.
def getLevel(): global level level = "fantastic"
getLevel()
print("SabzDanesh is " + level)
حذف متغیر در پایتون
در نوشتن یک برنامه کوچک، معمولاً کاری به متغیرهای بلا استفاده نداریم و آنها را به حال خود رها میکنیم. در برنامههای بزرگ ممکن است حذف متغیرهای اضافی به کاهش مصرف حافظه اصلی کمک بسیار زیادی کند.
برای حذف یک متغیر از حافظه (رم) از دستور del
استفاده میشود. فقط کافی است در جلوی این دستور نام متغیر مورد نظرمان را بنویسیم.
msg = "Hello World!"
print(msg)
del msg
print(msg)
با اجرای این کد، در خط دوم مقدار متغیر msg
چاپ میشود ولی در خط چهارم با خطای زیر روبهرو خواهیم شد چون متغیر دیگر وجود ندارد.
در حقیقت در زبان پایتون نوع دادهای از نوع ثابت نداریم! اگر آموزش مبانی برنامه نویسی را دنبال کرده باشید، میدانید که در بسیاری از زبانها مقداری به نام ثابت (constant که گاهی به آن static هم گفته میشود) وجود دارند. مقادیر ثابت یک بار مقداردهی شده و دیگر قابل تغییر نخواهند بود.
ثابت در پایتون به آن معنا که دیگر قابل تغییر نباشد وجود ندارد! فقط باید مقدار متغیر تعریف شده را تغییر ندهیم.
طبق یک قانون نانوشته، اکثر برنامهنویسها نام مقادیر ثابت را به صورت حروف بزرگ مینویسند. مثلاً برای تعریف ثابت url از نام URL استفاده میکنند.
یک نوع اصولی و استاندارد برای تعریف ثابت در پایتون این است که constantها را در یک فایل دیگر قرار داده و آن را به عنوان یک ماژول پایتون به برنامه اصلی اضافه کنیم.
با این کار، اگر زمانی نیاز به تغییر مقادیر ثابت در کل برنامه بود، فقط کافی است فایل حاوی آنها را تغییر دهیم.
بیایید یک مثال ساده بزنیم. من یک فایل به نام configs.py
ایجاد کرده و درون آن کد زیر را قرار میدهم.
URL = "sampleserver.com"
PORT = 2456
KEY = "s52#dgu83vE$"
حالا فایلی به نام run.py
در کنار آن ایجاد کرده و کد زیر (به نوعی کدهای اصلی برنامه) را درون آن مینویسم.
import configs
print(configs.URL)
print(configs.PORT)
ما در این کد از مقادیر به ظاهر ثابتی که در فایل configs.py
ایجاد کردیم استفاده میکنیم. همانطور که میبینید برای فراخوانی مقدار PORT آن را به صورت configs.PORT
مینویسیم.