پرش به مطلب اصلی

متغیرها

مقدمه

متغیر، محل نگهداری داده داخل مموری (Memory) هست!

ولی راحت‌تره اگه اینطوری تصور کنید که متغیر مثل یک ظرف برای نگهداری داده هست و توی برنامه میشه بهش یه مقداری داد و حتی تغییرش داد.

مثلا:

Python
number = 13

توی مثال بالا، من یک متغیر به اسم ‍number ساختم و مقدار 13 رو توش گذاشتم.

همونطور که بالاتر اشاره کردم، مقدار یک متغیر قابل تغییره. دقیقا مثل یک ظرف میوه‌خوری که یک بار میتونیم توش هلو بذاریم، یک بار خیار.

Python
number = 10
number = 6.4

توی مثال بالا، مقدار اولیه متغیر number برابر 10 بود. ولی مقدارش رو عوض کردم و عدد 6.4 رو گذاشتم توش.

مقداردهی به متغیرها

به نظرم تا الان متوجه شدید که با استفاده از = میتونید به یک متغیر مقدار بدید.

مثال ۱: تعریف و مقداردهی به یک متغیر

Python
employee = 'Massoud Maboudi'
id = 12

print(employee)
print(id)

خروجی

Terminal
Massoud Maboudi
12

توی برنامه بالا، من یک متغیر به اسم employee تعریف کردم و مقدار Massoud Maboudi رو بهش دادم. همینطور، یک متغیر دیگه به اسم id تعریف کردم و مقدار 12 رو توش گذاشتم. بعدش با استفاده از ()print، مقادیر اونها رو پرینت کردم.

بیشتر بدانیم

تابع ()print به ما کمک میکنه تا هر چیزی رو به یک رشته (String) تبدیل کنیم و اون رو توی کنسول به نمایش بذاریم.

برای آشنایی بیشتر با این تابع، پیشنهاد میکنم پست ()print و ()pprint در پایتون رو بخونید.

مثال ۲: تغییر مقدار یک متغیر

Python
employee = 'Massoud Maboudi'
print(employee)

employee = 'Mahdi Maboudi'
print(employee)

خروجی

Terminal
Massoud Maboudi
Mahdi Maboudi

توی کد بالا، اول مقدار Massoud Maboudi رو به متغیر employee دادم و بعد،‌ مقدارش رو عوض کردم و Mahdi Maboudi رو گذاشتم توش.

مقداردهی چندتایی به متغیرها

ما میتونیم به صورت همزمان، یک مقدار رو به چند متغیر بدیم.

مثال ۳: قرار دادن یک مقدار در چند متغیر

Python
x = y = z = 21

print(x)
print(y)
print(z)

خروجی

Terminal
21
21
21

توی کد بالا، مقدار 21 رو توی هر سه متغیر x، y و z به صورت همزمان گذاشتم.

همینطور میتونیم مقادیر مختلفی رو به هر متغیر بدیم.

مثال ۴: تعریف و مقداردهی به چند متغیر

Python
x, y, z = 21, 32, 43

print(x)
print(y)
print(z)

خروجی

Terminal
21
32
43

توی کد بالا، مقدار 21 به متغیر x، مقدار 32 به متغیر y و مقدار 43 به متغیر z داده میشه. باید دقت کنید که ترتیب توی این مدل مقداردهی مهمه و متغیرها نسبت به ترتیبی که دارن مقدار میگیرن.

حتما هم لازم نیست که جنس مقادیرمون عددی یا اصلا یکسان باشه.

مثال ۵: تعریف و مقداردهی به چند متغیر

Python
x, y, z = 21, 'Hi', True

print(x)
print(y)
print(z)

خروجی

Terminal
21
Hi
True

البته نمیشه به هر متغیر یک مقدار بدیم و با کاما , اونها رو جدا کنیم چرا که با ارور مواجه میشیم.

مثال ۶: تعریف و مقداردهی به چند متغیر (خطا)

Python
x = 21, y = 'Hi', z = True

خروجی

Terminal
SyntaxError: can't assign to literal

ثابت‌ها

یک ثابت (Constant) به نوعی از انواع داده میگن که مقدار اون قابل تغییر نیست.

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

باید عرض کنم خدمتتون که ما توی پایتون، داده‌ای به اسم ثابت نداریم. پس راه حل چیه؟

راه حل معمولا اینه که ثابت‌ها رو جور دیگه‌ای نام‌گذاری میکنیم. یعنی، تمام حروف رو بزرگ بنویسیم و با _ از هم جدا کنیم.

مقداردهی به ثابت‌ها

مثال ۶: تعریف و مقداردهی ثابت

Python
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
  • یک لیترال کاراکتری به یک کاراکتر میگن که توی ' یا " تعریف میشه.

مثال ۷: تعریف لیترال‌های رشته‌ای در پایتون

Python
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)

خروجی

Terminal
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

مثال ۸: تعریف لیترال‌های عددی در پایتون

Python
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)

خروجی

Terminal
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 در نظر گرفته میشه.

مثال ۹: تعریف لیترال‌های بولین در پایتون

Python
b = True

x = (1 == True)
y = (1 == False)
z = (3 > 2)
v = (4 > 7)

print(b)
print(x)
print(y)
print(z)
print(v)

خروجی

Terminal
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. معنی این لیترال اینه که هنوز هیچ مقداری به متغیر ندادیم.

مثال ۱۰: تعریف لیترال‌های خاص در پایتون

Python
b = None

print(b)

خروجی

Terminal
None

توی مثال بالا، مقدار متغیر b رو برابر با None قرار دادم.

یادداشت

توی قسمت‌های بعدی بیشتر با متغیر None کار میکنیم و کاربرد این لیترال رو بیشتر میبینید.

لیترال‌های کالکشن

در حالت کلی چهار نوع لیترال کالکشن توی پایتون داریم به نام‌های:

لیست (List)، تاپل (Tuple)، مجموعه (Set) و دیکشنری (Dictionary).

یادداشت

عجله نکنید! توی قسمت کالکشن‌ها بیشتر راجع به کالکشن‌ها و انواع داده‌های پیچیده‌تر صحبت میکنیم.

مثال ۱۱: تعریف لیترال‌های کالکشن در پایتون

Python
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)

خروجی

Terminal
['hi', 'hello', 'bye']

(12, 2, 56)

(1, 2, 3)

{'name': 'Massoud', 'age': 55}

توی مثال بالا، متغیر my_list شامل یک لیست هست. متغیر my_tuple شامل یک تاپل و متغیر my_set یک مجموعه رو توی خودش جا داده. همینطور، یک دیکشنری رو توی متغیر my_dictionary گذاشتم.

بیشتر بدانیم

در پایتون، ما به متغیر مقدار نمیدیم بلکه یک متغیر، نگهدارنده آدرسی هست که ما رو به مقدار داده ارجاع میده.

برای اینکه این مطلب رو بیشتر متوجه بشید، مرجع و هویت شئ در پایتون رو بخونید.

پیشنهاد من این هست که یکم با این متغیرها کار کنید و هر چیزی که دوست دارید امتحان کنید تا یکم توضیحات بالا رنگ بگیره براتون!