متغیرها
مقدمه
متغیر، محل نگهداری داده داخل مموری (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
گذاشتم.
بیشتر بدانیم
در پایتون، ما به متغیر مقدار نمیدیم بلکه یک متغیر، نگهدارنده آدرسی هست که ما رو به مقدار داده ارجاع میده.
برای اینکه این مطلب رو بیشتر متوجه بشید، مرجع و هویت شئ در پایتون رو بخونید.
پیشنهاد من این هست که یکم با این متغیرها کار کنید و هر چیزی که دوست دارید امتحان کنید تا یکم توضیحات بالا رنگ بگیره براتون!