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

 

ساخت متغیر در پایتون

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

 

ساخت یک متغیر جدید با علامت تساوی(=) انجام می شود. به مثال زیر دقت کنید:

>>> n = 300

 

در مثال بالا، مقدار عددی 300 را در متغیری به نام n ذخیره کردیم. حالا میتوانید از این متغیر در برنامه استفاده کنید:

>>> print(n)
300

 

در زمان مقداردهی متغیر ها، پایتون به طور اتوماتیک نوع متغیر را مشخص میکند. مثلا در کد بالا، مفسر پایتون میتواند تشخیص دهد که یک عدد را در متغیر n ذخیره کردیم. برای تشخیص نوع متغیر میتوانید از تابع type استفاده کنید. مثلا در کد زیر، نوع متغیر عددی int است:

>>> n = 300
>>> type(n)
<class 'int'>

 

یا اگر متغیر با نوع رشته ذخیره کنید، مفسر پایتون نوع متغیر را str مشخص میکند:

>>> m = 'amir'
>>> type(m)
<class 'str'>

 

 

تغییر مقدار متغیر در پایتون

برخلاف زبان های استاتیک تایپ(static typed) که نوع متغیر در آنها ثابت است، در پایتون میتوانید نوع یک متغیر را تغییر دهید. مثلا اگر مقدار ذخیره شده در یک متغیر عدد باشد، میتوانید آن را به انواع دیگر مانند رشته یا دیکشنری تغییر دهید.

 

به کد زیر دقت کنید:

>>> n = 300
>>> n = 'amir'
>>> n
amir

 

همانطور که در مثال بالا میبینید، مقدار متغیر n ابتدا عدد بود اما توانستیم آن را به نوع رشته تغییر دهیم.

 

 

حذف متغیر در پایتون

در زبان پایتون برای حذف متغیر ها میتوانید از دستور del استفاده کنید. بعد از حذف کردن متغیر، دیگر نمیتوانید از آن استفاده کنید و اگر متغیر حذف شده را فراخوانی کنید با خطا مواجه خواهید شد:

>>> n = 300
>>> del n
>>> n
NameError: name 'n' is not defined

 

همانطور که میبینید، استفاده از متغیر حذف شده باعث بروز خطای NameError شده است به این معنی که این متغیر وجود ندارد. معمولا نیاز نیست که برنامه نویس به صورت دستی اقدام به حذف متغیر ها کند زیرا مفسر پایتون به طور اتوماتیک میتواند متغیر های بلا استفاده را تشخیص داده و آن ها را حذف کند تا در مصرف حافظه صرفه جویی شود.

 

 

انتساب چند گانه متغیرها در پایتون

در پایتون ترفند های خاصی وجود دارد که میتوانید با آنها چند متغیر را همزمان ایجاد کنید. مثلا میتوانید چند متغیر را با علامت کاما ( , )  در یک خط ایجاد کنید:

>>> a, b = 100, 200
>>> a
100
>>> b
200

 

میتوانید بیش از سه متغیر را با انواع داده مختلف ایجاد کنید:

>>> a, b, c = 0.1, 100, 'string'

 

اگر در سمت چپ فقط یک متغیر وجود داشته باشد، یک تاپل ایجاد میشود:

>>> a = 100, 200
>>> a
(100, 200)
>>> type(a)
<class 'tuple'>

 

اگر تعداد متغیرها و مقادیر برابر نباشند، با خطای ValueError مواجه خواهید شد. مگر اینکه با علامت ستاره ( * ) بقیه مقادیر را به شکل یک لیست در متغیر ذخیره کنید:

>>> a, b = 100, 200, 300
ValueError: too many values to unpack (expected 2)

>>> a, b, c = 100, 200
ValueError: not enough values to unpack (expected 3, got 2)

>>> a, *b = 100, 200, 300
>>> a
100

>>> type(a)
<class 'int'>

>>> b
[200, 300]

>>> type(b)
<class 'list'>

>>> *a, b = 100, 200, 300
>>> a
[100, 200]

>>> type(a)
<class 'list'>

>>> b
300
>>> type(b)
<class 'int'>

 

ترفند دیگری که میتوانید در زمان ساخت متغیر در پایتون استفاده کنید، ساخت چند متغیر با یک مقدار است که در این حالت میتوانید از علامت مساوی( = ) چند بار پشت سر هم استفاده کنید:

>>> a = b = 100
>>> a
100
>>> b
100

 

 

قوانین نام گذاری متغیرها در پایتون

برای نام گذاری متغیر ها در پایتون باید از قوانین خاصی پیروی کنید تا نام انتخابی با منطق مفسر پایتون هماهنگ باشد. اگر از این قوانین پیروی نکنید با خطای SyntaxError مواجه خواهید شد:

 

  • نام متغیر باید با حروف الفبا انگلیسی یا زیر خط( _ ) شروع شود و نمیتواند با عدد یا هر کاراکتر دیگری شروع شود.
  • نام متغیر فقط میتواند شامل حروف الفبا انگلیسی، عدد و زیر خط ( _ ) باشد.
  • نام متغیر ها به حروف کوچک و بزرگ حساس است یعنی Name با name متفاوت است.
  • کلمات کلیدی رزرو شده در پایتون نمیتوانند به عنوان نام متغیر انتخاب شوند.
  • نام متغیر ها نمی تواند دارای فاصله باشد.

 

در کد زیر چند نمونه از نام متغیرهایی که نامعتبر هستند را آورده ایم:

1name
n@me
n me

 

در زمان ساخت متغیر سعی کنید نامی را انتخاب کنید که معنی و مفهوم را برساند و مشخص کند که متغیر برای چه کاری استفاده می شود. مثلا فرض کنید میخواهید تعداد افرادی که از دانشگاه فارغ التحصیل شده اند را ذخیره کنید. می توانید یکی از موارد زیر را انتخاب کنید:

>>> numberofcollegegraduates = 2500
>>> NUMBEROFCOLLEGEGRADUATES = 2500
>>> numberOfCollegeGraduates = 2500
>>> NumberOfCollegeGraduates = 2500
>>> number_of_college_graduates = 2500

 

در کد بالا از روی نام متغیر میتوان فهمید که برای چه کاری استفاده میشوند. اما مشکلی که وجود دارد سردرگمی در نحوه استفاده از حروف بزرگ یا کوچک است زیرا همه مثال های بالا خوانا نیستند.

 

اکثر برنامه نویسان دو مثال اول را که در آن حروف همه به هم چسبیده اند، دشوارتر می دانند، به خصوص نمونه ای که با تمام حروف بزرگ نوشته شده است. متداول‌ترین روش‌های مورد استفاده برای ساخت یک نام متغیر چند کلمه‌ای، سه نمونه آخر هستند:

 

  • Camel Case: کلمات دوم و بعدی با حروف بزرگ نوشته می‌شوند تا مرزهای کلمات راحت‌تر دیده شوند. مثلا numberOfCollegeGraduates
  • Pascal Case: با Camel Case یکسان است، به جز اینکه کلمه اول نیز با حروف بزرگ نوشته شده است. مثلا NumberOfCollegeGraduates
  • Snake Case: کلمات با زیرخط از هم جدا می شوند. مثلا number_of_college_graduates

 

راهنمای سبک برای کد پایتون، که به عنوان PEP 8 شناخته می‌شود، شامل قراردادهای نام‌گذاری است که استانداردهای پیشنهادی را برای نام‌های انواع آبجکت های مختلف را مشخص میکند. PEP 8 موارد زیر را توصیه میکند:

  • Snake Case باید برای توابع و نام متغیرها استفاده شود.
  • از Pascal Case باید برای نام کلاس ها استفاده شود.

 

 

نحوه مدیریت متغیر ها توسط مفسر پایتون

وقتی یک متغیر ایجاد میکنید در واقع چه اتفاقی می افتد؟ مفسر پایتون چطور متغیر ها را مدیریت میکند؟ این یک سوال مهم در پایتون است، زیرا پاسخ آن تا حدودی با آنچه در بسیاری از زبان های برنامه نویسی دیگر پیدا می کنید متفاوت است.

 

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

 

این کد را در نظر بگیرید:

>>> print(300)
300

 

هنگامی که کد بالا را اجرا میکنید، مفسر پایتون کارهای زیر را انجام می دهد:

  • یک آبجکت عدد صحیح ایجاد می کند.
  • به آن مقدار 300 را میدهد.
  • آنرا در خروجی نشان میدهد.

 

می توانید ببینید که یک آبجکت عدد صحیح با استفاده از تابع ()type داخلی ایجاد می شود:

>>> type(300)
<class 'int'>

 

در پایتون زمانی که یک متغیر ایجاد میکنید، در واقع یک نام نمادین برای یک آبجکت انتخاب کرده اید. آبجکت در حافظه ذخیره شده و شما با نام متغیر میتوانید به آبجکت دسترسی داشته باشید.

 

به عنوان مثال:

>>> n = 300

 

این انتساب یک آبجکت عدد صحیح با مقدار 300 ایجاد می کند و متغیر n را به آن آبجکت اختصاص می دهد.

انتساب یک متغیر

 

کد زیر تأیید می کند که n به یک آبجکت عدد صحیح اشاره می کند:

>>> print(n)
300
>>> type(n)
<class 'int'>

 

حال عبارت زیر را در نظر بگیرید:

>>> m = n

 

وقتی اجرا می شود چه اتفاقی می افتد؟ پایتون آبجکت دیگری ایجاد نمی کند. به سادگی یک نام نمادین یا مرجع جدید، m ایجاد می کند که به همان آبجکتی اشاره می کند که n به آن اشاره می کند.

اضافه کردن یک مرجع جدید به یک متغیر در پایتون

 

بعد، فرض کنید این کار را انجام دهید:

>>> m = 400

 

حال پایتون یک آبجکت عدد صحیح جدید با مقدار 400 ایجاد می کند و m تبدیل به مرجع آن می شود.

تغییر مرجع دوم متغیر در پایتون

 

در نهایت، فرض کنید این دستور در ادامه اجرا شود:

>>> n = "foo"

 

اکنون پایتون یک آبجکت رشته با مقدار "foo" ایجاد می کند و n را به آن ارجاع می دهد.

حذف مرجع یک متغیر در پایتون

 

دیگر هیچ اشاره ای به آبجکت عدد صحیح 300 وجود ندارد. این آبجکت یتیم است و هیچ راهی برای دسترسی به آن وجود ندارد. در طول عمر یک آبجکت، تا زمانی که مرجعی به آن وجود داشته باشد، زنده خواهد ماند. اما به محض اینکه تعداد مرجع های یک آبجکت به صفر برسد، برای مدیریت بهینه حافظه، این آبجکت حذف خواهد شد. در این مرحله، عمر آن به پایان می رسد. در زبان کامپیوتری، این فرآیند را جمع آوری زباله می نامند.

 

 

هویت متغیرها در پایتون

در پایتون به هر متغیر یا آبجکتی که ایجاد می شود یک عدد داده می شود که به طور منحصر به فرد آن را مشخص می کند. تضمین شده که هیچ دو آبجکت شناسه یکسانی نداشته باشند.

 

تابع id پایتون شناسه عدد صحیح یک متغیر را برمی گرداند. با استفاده از تابع id می توانید بررسی کنید که دو متغیر واقعاً به یک آبجکت اشاره می کنند یا خیر:

>>> n = 300
>>> m = n
>>> id(n)
60127840
>>> id(m)
60127840

>>> m = 400
>>> id(m)
60127872

 

پس از انتساب m = n، متغیرهای m و n هر دو به یک آبجکت اشاره می کنند، که با این واقعیت تأیید می شود که id(m) و id(n) یک عدد را برمی گردانند. هنگامی که m دوباره به 400 اختصاص یافت، m و n به آبجکت های مختلف با هویت های مختلف اشاره می کنند.

 

 

متغیر های ثابت در پایتون

متغیرهای ثابت به متغیرهایی گفته میشود که مقادیر آنها در زمان اجرا نباید تغییر کند. در اکثر زبان های برنامه نویسی مفهومی به معنای ثابت وجود دارد که مفسر آن زبان اجازه تغییر مقادیر را نمیدهد. اما پایتون به صورت پیشفرض از مفهوم متغیرهای ثابت پشتیبانی نمیکند.

 

تنها کاری که میتوانید در پایتون برای ایجاد کردن متغیر های ثابت انجام دهید نامگذاری نام متغیر با حروف بزرگ است. مثلا به جای host بنویسید HOST. این فقط یک قرارداد است و هر زمان که بخواهید میتوانید مقدار ثابت ها را تغییر دهید.

 

معمولا متغیر های ثابت را در ماژولی جداگانه ذخیره کرده و در صورت نیاز import میکنند. مثلا فرض کنید که فایلی به نام settings.py به شکل زیر داریم:

# settings.py
HOST = 'smtp.gmail.com'
PASSWORD = 'secure_pass'

 

همچنین مفسر پایتون نیز دارای تعدادی متغیر ثابت داخلی است که میتوانید از بخش Built-in Constants آنها را ببینید.

 

 

نتیجه گیری

این آموزش اصول اولیه متغیرهای پایتون، از جمله ارجاعات و هویت و نام‌گذاری متغیرهای پایتون را پوشش داد. اکنون درک خوبی از برخی از انواع داده های پایتون دارید و می دانید که چگونه متغیرهایی ایجاد کنید که به اشیاء آن نوع ارجاع دهند.



0

Intro

10:38

رایگان

1

Variable

12:30

رایگان

2

String

19:22

رایگان

3

List

8:46

رایگان

4

While

9:6

رایگان

5

If

8:37

رایگان

6

For

6:12

رایگان

7

range

4:17

رایگان

8

break, continue, pass

9:15

رایگان

9

Function

12:32

رایگان

10

List methods

12:11

رایگان

11

Tuple

8:29

رایگان

12

Set

7:47

رایگان

13

Dictionary

9:19

رایگان

14

Module

10:40

رایگان

15

fstring

5:35

رایگان

16

format

7:34

رایگان

17

File

17:14

رایگان

18

Scope

6:25

رایگان

19

OOP

12:15

رایگان

20

Method

20:19

رایگان

21

class/instance variable

14:7

رایگان

22

class/static method

13:25

رایگان

23

Inheritance

17:6

رایگان

24

Special methods

9:50

رایگان

25

Access points

11:12

رایگان

26

property

6:54

رایگان

27

Exceptions

21:17

رایگان

28

Standard library

12:51

رایگان

29

Docstring

10:49

رایگان

30

Virtualenv

11:2

رایگان

دوره های پیشنهادی

دوره آموزش Multi Processing در پایتون
دوره آموزش Multi Processing در پایتون
تکمیل ضبط
امیرحسین بیگدلو
دوره اول آموزش جنگو (django)
دوره اول آموزش جنگو (django)
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش لینوکس(linux)
دوره آموزش لینوکس(linux)
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


شهریار

9 ماه قبل پاسخ به نظر

امیر خان سلام
اگر ممکن هست یک ویدئو همراه با توضیحات کامل در مورد کلاس و تابع های سازنده ارائه بده منتظرم

ارسال نظر



Parsa

1 سال قبل پاسخ به نظر

سلام لطفا این دوره رو آپدیت سال 2023 کنید ،سپاس

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
این دوره نیازی به آپدیت نداره

سپهر

1 سال قبل پاسخ به نظر

سلام استاد وقت بخیر . من میخوام یه ورودی بگیرم که فاصله خالی بین جملاتم رو با ... نقطه پر کنه باید از کدوم تابع استفاده کنم . چطور ؟
ممنون اگه راهنمایی کنید .

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
میتونید از متد replace استفاده کنید:
https://www.w3schools.com/python/ref_string_replace.asp

Shirin

2 سال قبل پاسخ به نظر

واقعا خیلی مفهومی و خوب توضیح میدین حتی مسائل ساده ای که تا قبل از دیدن ویدئوتون فقط انجامشون میدادم و عمیق نبود آگاهیم راجع بهشون.ممنون از شما

ارسال نظر



حبیبی

2 سال قبل پاسخ به نظر

سلام خیلی کامل و خوب بود

ارسال نظر



حسام

2 سال قبل پاسخ به نظر

سلام
زمان این جلسه اشتباه خورده
نوشتید 13:57 ولی 12:30 هست

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
ممنون. درست شد

اصغری

2 سال قبل پاسخ به نظر

با سلام
ویدیوی جلسه دوم "متغیر و انواع داده ها در پایتون" بارگذاری نمی شود. هم با کروم هم فایرفاکس چک کردم.
با تشکر

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
این دوره رو دارم آپدیت میکنم.
اون ویدیو حذف شده و دیگه نیازی نیست ببینید

بام

3 سال قبل پاسخ به نظر

بسیار روان و خوب

ارسال نظر



مهدی

3 سال قبل پاسخ به نظر

عالی!!

ارسال نظر



مونگارد