🔥 متغیرها در پایتون؛ چیزی فراتر از "x = 10"
وقتی میگوییم:
x = 10
در واقع پایتون یک «جعبه» به نام "x" نمیسازد که عدد ۱۰ داخل آن قرار گرفته باشد؛ بلکه نام "x" را به یک شیء (Object) در حافظه متصل میکند.
1.متغیر در پایتون واقعاً چیست؟
در زبانهایی مانند C، معمولاً متغیر را بهعنوان یک محل مشخص در حافظه در نظر میگیریم؛ اما در پایتون:
متغیر بیشتر شبیه یک نام (Name) است که به یک شیء اشاره میکند.
x = 10
y = x
print(x) # 10
print(y) # 10
در اینجا "x" و "y" هر دو به یک شیء اشاره میکنند.
print(x is y)
ممکن است خروجی:
True
باشد؛ چون هر دو نام به همان شیء اشاره دارند.
━━━━━━━━━━━━━━━━━━
2. تفاوت "==" و "is"؛ نکتهای بسیار مهم!
🔹 "==" بررسی میکند که آیا مقدار دو شیء برابر است یا نه.
🔹 "is" بررسی میکند که آیا دو نام دقیقاً به یک شیء اشاره میکنند یا نه.
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True
print(a is b) # False
چرا؟
چون محتوا یکسان است، اما دو لیست مستقل در حافظه ساخته شدهاند.
از "is" برای مقایسهٔ مقادیر معمولی استفاده نکنید؛ کاربرد اصلی آن بررسی هویت شیء است.
━━━━━━━━━━━━━━━━━━
3.متغیرها Type ندارند؛ Objectها Type دارند!
این جمله یکی از مهمترین نکات پایتون است:
«در پایتون، متغیر نوع ثابت ندارد؛ این شیء است که نوع دارد.»
x = 10
print(type(x)) # int
x = "Python"
print(type(x)) # str
x = [1, 2, 3]
print(type(x)) # list
نام "x" تغییر نکرده است؛ اما هر بار به شیئی با نوع متفاوت اشاره میکند.
به این ویژگی میگوییم:
Dynamic Typing
━━━━━━━━━━━━━━━━━━
4. Mutable و Immutable
یکی از کلیدیترین مفاهیم پایتون
Immutable (تغییرناپذیر):
- "int"
- "float"
- "str"
- "tuple"
- "bool"
- "frozenset"
Mutable (تغییرپذیر):
- "list"
- "dict"
- "set"
━━━━━━━━━━━━━━━━━━
5.Scope
متغیرها کجا قابل دسترسی هستند؟
پایتون از قانون معروف LEGB استفاده میکند:
- L → Local
- E → Enclosing
- G → Global
- B → Built-in
مثال:
x = "global"
def outer():
x = "enclosing"
def inner():
x = "local"
print(x)
inner()
outer()
خروجی:
local
پایتون ابتدا در محدودهٔ Local جستوجو میکند، سپس Enclosing، بعد Global و در نهایت Built-in.
━━━━━━━━━━━━━━━━━━
6.چند انتسابی (Multiple Assignment)
پایتون اجازه میدهد چند متغیر را همزمان مقداردهی کنید:
a, b, c = 10, 20, 30
حتی جابهجایی بدون متغیر کمکی:
a, b = b, a
در واقع پایتون ابتدا مقادیر سمت راست را آماده کرده و سپس آنها را به نامهای سمت چپ اختصاص میدهد.
━━━━━━━━━━━━━━━━━━
7.حذف متغیر با "del"
x = 10
del x
بعد از این دستور، نام "x" دیگر در آن Scope وجود ندارد.
⚠️ "del"
لزوماً به معنای نابودی فوری شیء نیست؛ فقط یک Reference را حذف میکند. اگر شیء مرجع دیگری نداشته باشد، ممکن است توسط Garbage Collector مدیریت شود.
━━━━━━━━━━━━━━━━━━
8. نامگذاری حرفهای متغیرها
نام خوب باید:
✔️ معنیدار باشد.
✔️ کوتاه اما واضح باشد.
✔️ از "snake_case" استفاده کند.
✔️ با کلمات رزروشده تداخل نداشته باشد.
نام بد:
x = 86400
نام بهتر:
SECONDS_PER_DAY = 86400
نامگذاری مناسب، خوانایی کد را بهشدت افزایش میدهد.
━━━━━━━━━━━━━━━━━━
جمعبندی نهایی
متغیر در پایتون فقط یک نام برای نگهداری مقدار نیست؛ بلکه بخشی از یک سیستم مبتنی بر Object، Reference، Scope و مدیریت حافظه است.
پایتون را فقط با حفظ سینتکس یاد نگیرید؛ مدل ذهنی پشت زبان را یاد بگیرید. 🐍
#پایتون
#آموزش_متغیرها
@comma_code1
3 · 335 · پست🔥 متغیرها در پایتون؛ چیزی فراتر از "x = 10"
12 سپتامبر 2026در همان حوالی فید
این پیام