متغیرها
مقدمه
متغیر، محل نگهداری داده داخل مموری (Memory) هست!
ولی راحتتره اگه اینطوری تصور کنید که متغیر مثل یک ظرف برای نگهداری داده هست و توی برنامه میشه بهش یه مقداری داد و حتی تغییرش داد.
مثلا:
number = 13
توی مثال بالا، من یک متغیر به اسم number ساختم و مقدار 13 رو توش گذاشتم.
همونطور که بالاتر اشاره کردم، مقدار یک متغیر قابل تغییره. دقیقا مثل یک ظرف میوهخوری که یک بار میتونیم توش هلو بذاریم، یک بار خیار.
number = 10
number = 6.4
توی مثال بالا، مقدار اولیه متغیر number برابر 10 بود. ولی مقدارش رو عوض کردم و عدد 6.4 رو گذاشتم توش.
مقداردهی به متغیرها
به نظرم تا الان متوجه شدید که با استفاده از = میتونید به یک متغیر مقدار بدید.
مثال ۱: تعریف و مقداردهی به یک متغیر
employee = 'Massoud Maboudi'
id = 12
print(employee)
print(id)
خروجی
Massoud Maboudi
12
توی برنامه بالا، من یک متغیر به اسم employee تعریف کردم و مقدار Massoud Maboudi رو بهش دادم. همینطور، یک متغیر دیگه به اسم id تعریف کردم و مقدار 12 رو توش گذاشتم. بعدش با استفاده از ()print، مقادیر اونها رو پرینت کردم.
تابع ()print به ما کمک میکنه تا هر چیزی رو به یک رشته (String) تبدیل کنیم و اون رو توی کنسول به نمایش بذاریم.
برای آشنایی بیشتر با این تابع، پیشنهاد میکنم پست ()print و ()pprint در پایتون رو بخونید.
مثال ۲: تغییر مقدار یک متغیر
employee = 'Massoud Maboudi'
print(employee)
employee = 'Mahdi Maboudi'
print(employee)
خروجی
Massoud Maboudi
Mahdi Maboudi
توی کد بالا، اول مقدار Massoud Maboudi رو به متغیر employee دادم و بعد، مقدارش رو عوض کردم و Mahdi Maboudi رو گذاشتم توش.
مقداردهی چندتایی به متغیرها
ما میتونیم به صورت همزمان، یک مقدار رو به چند متغیر بدیم.
مثال ۳: قرار دادن یک مقدار در چند متغیر
x = y = z = 21
print(x)
print(y)
print(z)
خروجی
21
21
21
توی کد بالا، مقدار 21 رو توی هر سه متغیر x، y و z به صورت همزمان گذاشتم.
همینطور میتونیم مقادیر مختلفی رو به هر متغیر بدیم.
مثال ۴: تعریف و مقداردهی به چند متغیر
x, y, z = 21, 32, 43
print(x)
print(y)
print(z)
خروجی
21
32
43
توی کد بالا، مقدار 21 به متغیر x، مقدار 32 به متغیر y و مقدار 43 به متغیر z داده میشه. باید دقت کنید که ترتیب توی این مدل مقداردهی مهمه و متغیرها نسبت به ترتیبی که دارن مقدار میگیرن.
حتما هم لازم نیست که جنس مقادیرمون عددی یا اصلا یکسان باشه.
مثال ۵: تعریف و مقداردهی به چند متغیر
x, y, z = 21, 'Hi', True
print(x)
print(y)
print(z)
خروجی
21
Hi
True
البته نمیشه به هر متغیر یک مقدار بدیم و با کاما , اونها رو جدا کنیم چرا که با ارور مواجه میشیم.
مثال ۶: تعریف و مقداردهی به چند متغیر (خطا)
x = 21, y = 'Hi', z = True
خروجی
SyntaxError: can't assign to literal
ثابتها
یک ثابت (Constant) به نوعی از انواع داده میگن که مقدار اون قابل تغییر نیست.
مثلا ممکنه از یک مقدار عددی مثل عدد پی (PI) استفاده کنید. مقدار عدد پی معمولا توی تمام محاسبات ثابت در نظر گرفته میشه و ما هم نمیخوایم توی برنامه اون رو تغییر بدیم، پس اون رو توی یک ثابت میذاریم تا حسابش از بقیه متغیرها جدا باشه.
باید عرض کنم خدمتتون که ما توی پایتون، دادهای به اسم ثابت نداریم. پس راه حل چیه؟
راه حل معمولا اینه که ثابتها رو جور دیگهای نامگذاری میکنیم. یعنی، تمام حروف رو بزرگ بنویسیم و با _ از هم جدا کنیم.
مقداردهی به ثابتها
مثال ۶: تعریف و مقداردهی ثابت
PI = 3.14
EMPLOYEE_ID = 658
نحوه نامگذاری ثابتها باعث نمیشه که نتونیم دوباره مقدار اونها عوض کنیم. این قرارداد برای نامگذاری فقط برای خودمونه که بین متغیرهای عادی و ثابتها تفاوت قائل بشیم.
قوانین نامگذاری متغیرها
برای نامگذاری متغیرها توی پایتون یک سری قوانین وجود داره که باید اونها رو همیشه در نظر بگیرید.
- نام یک متغیر باید با یک حرف یا
_(Underscore) شروع شود. - نام یک متغیر نمیتواند با عدد شروع شود و یا دارای فاصله باشد.
- نام یک متغیر میتواند شامل حروف بزرگ و کوچک (A-z)، اعداد (9-0) و
_(Underscore) باشد. - نام یک متغیر نمیتواند شامل کاراکترهای خاص مثل
!@#$%^&*باشد. - نام یک متغیر به حروف بزرگ و کوچک حساس است. مثلا
EMPLOYEEوEmployeeوemployeeسه متغیر متفاوت هستند. - نام یک متغیر نمیتواند کلمات کلیدی (Keywords) موجود در پایتون پایتون باشد.
روشهای صحیح و استانداردی برای نامگذاری متغیرها توی پایتون وجود داره که توی پست نامگذاری صحیح در پایتون به صورت کامل توضیح دادم.
لیترالها
لیترال (Literal) به دادهای میگن که توی یک متغیر یا ثابت میذاریم. توی پایتون از لیترالهای مختلفی استفاده میکنیم که من به صورت خلاصه براتون توضیح میدم.
لیترالهای رشتهای
در حالت کلی، رشته به مجموعهای از کاراکترهایی میگن که توی ' (Quotation) یا " (Double Quotation) هستن.
توی پایتون البته میتونیم از ' یا " یا """ برای تعریف رشته استفاده کنیم.
سه نوع دادهی رشتهای دیگه هم توی پایتون داریم که به صورت زیر تعریف میشن:
- اگر دو حرف اول با
uشروع بشه، به اونها رشتهی یونیکد (Unicode) میگیم مثل'u'Hi - اگر دو حرف اول با
rشروع بشه، به اونها رشتهی خام (Raw) میگیم مثل'r'raw \n string - یک لیترال کاراکتری به یک کاراکتر میگن که توی
'یا"تعریف میشه.
مثال ۷: تعریف لیترالهای رشتهای در پایتون
my_string = 'Hey! This is a single line string.'
my_multiline_string = """Hi!
What's up man?
This is an example of a multiline string.
"""
my_character = 'M'
my_unicode_string = u"Hi"
my_raw_string = r'raw \n string'
print(my_string)
print(my_multiline_string)
print(my_character)
print(my_unicode_string)
print(my_raw_string)
خروجی
Hey! This is a single line string.
Hi!
What's up man?
This is an example of a multiline string.
M
Hi
raw \n string
توی کد بالا، متغیر my_string یک رشتهی یک خطی رو شامل میشه.
متغیر my_multiline_string یک رشتهی چند خطی رو شامل میشه که این چند خطی بودن قابل نمایشه. سعی کنید همین کار رو با متغیر my_string انجام بدید و ببینید نتیجه چیه.
متغیر my_character هم یک رشته یک کاراکتری رو تو خودش داره.
همینطور، متغیر my_unicode_string یک رشته یونیکد رو تو خودش جا داده. برای کاربردهای یونیکد یه سرچ ساده بد نیست.
توی متغیر my_raw_string هم یک رشته خام گذاشتم. این مدل از رشتهها کاربردهای خاص خودشون رو دارن. مثلا از اونها توی Regex استفاده میکنیم.
از """ برای تعریف رشته های چند خطی استفاده میشه.
لیترالهای عددی
در حالت کلی ما سه نوع لیترال عددی توی پایتون داریم به نامهای عدد صحیح (Integer)، عدد اعشاری (Float) و عدد مختلط (Complex).
سه نوع دادهی عددی دیگه هم توی پایتون داریم که به صورت زیر تعریف میشن:
- اگر دو حرف اول با
0bشروع بشه، به اونها باینری (Binary) میگیم مثل0b101101 - اگر دو حرف اول با
0oشروع بشه، به اونها اُکتال (Octal) میگیم مثل0o35 - اگر دو حرف اول با
0xشروع بشه، به اونها هگزادسیمال (Hexadecimal) میگیم مثل0x3c
مثال ۸: تعریف لیترالهای عددی در پایتون
i = 62
x = 0b101101
y = 0o35
z = 0x3c
f_1 = 12.3
f_2 = 1.6e3
c = 2.18j
print(i)
print(x)
print(y)
print(z)
print(f_1)
print(f_2)
print(c)
خروجی
62
45
29
60
12.3
1600.0
2.18j
توی کد بالا، عدد 62 رو توی متغیر i گذاشتم.
عدد باینری 0b101101 رو توی متغیر x، عدد اُکتال 0o35 رو توی متغیر y و عدد هگزادسیمال 0x3c رو توی متغیر z گذاشتم.
همینطور عدد اعشاری 12.3 رو توی متغیر f_1 و عدد اعشاری 1.6e3 رو توی متغیر f_2 گذاشتم.
در نهایت هم یک عدد مختلط با مقدار 2.18j رو توی متغیر c گذاشتم.
لیترالهای بولین
توی پایتون لیترالهایی داریم که کلا دوتا مقدار میتونن داشته باشن؛ True یا False.
توی پایتون، مقدار True برابر 1 و مقدار False برابر با 0 در نظر گرفته میشه.
مثال ۹: تعریف لیترالهای بولین در پایتون
b = True
x = (1 == True)
y = (1 == False)
z = (3 > 2)
v = (4 > 7)
print(b)
print(x)
print(y)
print(z)
print(v)
خروجی
True
True
False
True
False
همونطور که که توی مثالهای بالا میبینید، در قسمت اول، True رو به متغیر b دادم.
توی پایتون مقدار لیترال True برابر با 1 و مقدار لیترال False برابر 0 هست. برای همین مقدار x برابر با True میشه چرا که 1 مساوی با True هستش و مقدار عبارت y برابر False میشه چرا که 1 مساوی با False نیست.
به طور مشابه، مقدار z برابر True میشه چون 3 از 2 بزرگتره و مقدار v برابر False میشه چون 4 از 7 بزرگتر نیست.
لیترالهای خاص
یک مورد قشنگ که توی پایتون داریم اینه که یک لیترالی داریم به اسم None. معنی این لیترال اینه که هنوز هیچ مقداری به متغیر ندادیم.
مثال ۱۰: تعریف لیترالهای خاص در پایتون
b = None
print(b)
خروجی
None
توی مثال بالا، مقدار متغیر b رو برابر با None قرار دادم.
توی قسمتهای بعدی بیشتر با متغیر None کار میکنیم و کاربرد این لیترال رو بیشتر میبینید.
لیترالهای کالکشن
در حالت کلی چهار نوع لیترال کالکشن توی پایتون داریم به نامهای:
لیست (List)، تاپل (Tuple)، مجموعه (Set) و دیکشنری (Dictionary).
عجله نکنید! توی قسمت کالکشنها بیشتر راجع به کالکشنها و انواع دادههای پیچیدهتر صحبت میکنیم.
مثال ۱۱: تعریف لیترالهای کالکشن در پایتون
my_list = ['hi', 'hello', 'bye']
my_tuple = (12, 2, 56)
my_set = (1, 2, 3)
my_dictionary = {'name': 'Massoud', 'age': 55}
print(my_list)
print(my_tuple)
print(my_set)
print(my_dictionary)
خروجی
['hi', 'hello', 'bye']
(12, 2, 56)
(1, 2, 3)
{'name': 'Massoud', 'age': 55}
توی مثال بالا، متغیر my_list شامل یک لیست هست. متغیر my_tuple شامل یک تاپل و متغیر my_set یک مجموعه رو توی خودش جا داده. همینطور، یک دیکشنری رو توی متغیر my_dictionary گذاشتم.
در پایتون، ما به متغیر مقدار نمیدیم بلکه یک متغیر، نگهدارنده آدرسی هست که ما رو به مقدار داده ارجاع میده.
برای اینکه این مطلب رو بیشتر متوجه بشید، مرجع و هویت شئ در پایتون رو بخونید.
پیشنهاد من این هست که یکم با این متغیرها کار کنید و هر چیزی که دوست دارید امتحان کنید تا یکم توضیحات بالا رنگ بگیره براتون!