متغیرها و انواع داده؛ جعبه‌های جادویی که کدت رو زنده می‌کنن!
اگه برنامه‌نویسی رو مثل آشپزی بدونیم، متغیرها همون کاسه‌ها و ظرف‌هایی هستن که مواد اولیه (داده‌ها) رو می‌ریزیم توشون. ولی خب، ظرف‌های پایتون از اون جور ظرف‌ها نیستن که اندازه یا جنسشون رو از قبل مشخص کنی. اینجا همه‌چیز هوشمنده، خودکار و یه خرده هم جادویی. آماده باش تا این قفسهٔ آشپزخونه رو با هم زیر و رو کنیم!

متغیر دقیقاً چیه؟ برچسب، نه جعبه
همه می‌گن «متغیر یه جعبه‌ست که توش مقدار می‌ذاری». ولی تو پایتون، متغیر بیشتر شبیه یه برچسب رنگی می‌مونه که می‌زنی روش یه شیء. خود شیء یه جای حافظه زندگی می‌کنه، و برچسب فقط بهش اشاره می‌کنه. این شد یه مفهوم خفن: یه شیء می‌تونه چندتا برچسب داشته باشه، یا برچسب رو بکنی و بزنی رو یه چیز دیگه. ولی سخت نگیر، در عمل این شکلیه:


age = 25          # برچسب age خورد به عدد 25
name = "آرتین"    # برچسب name خورد به یه رشته


همین! نه int ای، نه string ای، نه جار و جنجال. پایتون خودش از روی مقداری که دادی می‌فهمه نوع داده چیه. به این می‌گن Dynamic Typing، یعنی نوع متغیر توی زمان اجرا مشخص می‌شه و حتی می‌تونه بعداً عوض بشه:


x = 10        # الان x یه عدده
x = "سلام"    # حالا شد یه رشته! پایتون اعتراض نمی‌کنه


(البته نباید این کارو بی‌حساب کتاب انجام بدی وگرنه کدت شلخته می‌شه، اما آزادیش خفنه.)

قوانین نام‌گذاری؛ اسم متغیرت رو آبرومندانه انتخاب کن
پایتون برای اسم متغیر یه سری قانون داره که اگر بشکنیشون، خطای قرمزی روت آوار می‌شه:

فقط حروف، عدد و زیرخط _ مجازه. (فاصله، خط تیره، نقطه و ایموجی ممنوع! هرچند زبان‌های جدیدتر ایموجی رو پشتیبانی می‌کنن ولی پایتون هنوز باهاشون قهره.)

با عدد نمی‌تونه شروع بشه. 1name غلطه، name1 درسته.

به حروف بزرگ و کوچک حسابه: Age و age دوتا متغیر جدان.

و اما اخلاق حرفه‌ای:

اسامی با معنی انتخاب کن. x, y, z فقط وقتی خوبن که مختصات باشن، وگرنه از student_count, user_name, is_logged_in استفاده کن که گویان.

قرارداد snake_case رو رعایت کن: کلمات رو با زیرخط جدا کن، همه حروف کوچیک. پایتون پپ‌۸ به این شکل تعظیم می‌کنه.

چهار شگفت‌انگیز دنیای داده‌ها
پایتون کلی نوع داده داره، ولی تو شروع کار، چهارتا ابرقهرمان هستن که هر روز باهاشون سروکار داری:

۱. عدد صحیح (int) – اعداد بدون اعشار
همونایی که از صفر تا بی‌نهایت (و منفی‌هاش) هستن. پایتون برای عددهای خیلی بزرگ هم کم نمیاره، حافظه اجازه بده تا هرجا دوست داری بشمار:


age = 30
distance_to_moon_km = 384400
population = 8_000_000_000  # می‌تونی برای خوانایی از _ استفاده کنی


2. عدد اعشاری (float) – اعداد با ممیز
هرجا پای دقت و اعشار وسط باشه، float میاد وسط. علامت ممیز فارسی رو یادت بره، اینجا نقطه استفاده می‌کنیم:


pi = 3.14
temperature = -4.5
avogadro = 6.022e23   # نماد علمی هم بلده


۳. رشته (str) – متن‌ها و جمله‌ها
هرچی بین " یا ' بذاری، رشته‌ست. حتی یه حرف تنها. برای متن‌های چندخطی هم """ یا ''' داری:


greeting = "سلام رفیق!"
quote = 'پایتون زندگیه، باقی جزییاته'
poem = """این یه شعر کوتاهه
که تو دو خط نوشته می‌شه
و پایتون کاملاً می‌فهمه"""


۴. بولین (bool) – راست یا دروغ
فقط دو مقدار داره: True و False. (دقت کن حرف اول بزرگه، وگرنه پایتون قهر می‌کنه.) عصارهٔ منطق و شرط‌ها:


is_student = True
has_graduated = False
print(10 > 5)   # چاپ می‌کنه True


ببین توی برچسبت چیه: تابع type()
اگه شک کردی یه متغیر از چه نوعیه، type() مثل یه دوربین مخفی بهت نشون می‌ده:


x = 42
print(type(x))   # <class 'int'>

y = "42"
print(type(y))   # <class 'str'>


همینجا یه نکتهٔ طلایی: "42" با 42 فرق داره. اولی رشته‌ست و نمی‌تونی باهاش جمع ریاضی کنی، دومی عدده. اینجاست که تبدیل نوع (Casting) میاد به دادت.

تبدیل نوع (Type Casting)؛ از کدو تنبل کالسکه بساز
گاهی لازمه نوع داده رو عوض کنی، مثلاً عددی که تو رشته گیر افتاده رو آزاد کنی تا حساب کتاب روش انجام بدی. پایتون چندتا تابع آماده داره:

int() : تبدیل به عدد صحیح (اعشار رو حذف می‌کنه، گرد نمی‌کنه)

float() : تبدیل به اعشاری

str() : تبدیل به رشته (برای چسبوندن به متن عالیه)

bool() : تبدیل به بولین (هرچی غیرصفر و غیرخالی True می‌شه)


num_str = "123"
num = int(num_str)        # 123 از نوع int
price = float("19.99")    # 19.99 از نوع float
age = 25
sentence = "سن من " + str(age) + " ساله"   # رشته‌ها رو می‌تونیم بچسبونیم


هشدار جدی: اگه چیزی رو بدهی به int() که عدد نباشه، پایتون یه ValueError پرتاب می‌کنه و برنامه می‌خوابه. پس حواست باشه.

گپ زدن با کاربر: input() همیشه رشته برمی‌گردونه
وقتی می‌خوای از کاربر داده بگیری، input() منتظر یه خط تایپ می‌مونه. هرچی کاربر وارد کنه، حتی اگه عدد باشه، پایتون بهت رشته تحویل می‌ده. پس اگر نیاز به عدد داری، باید خودت دستی تبدیلش کنی:


name = input("اسمت چیه؟ ")          # هرچی وارد کنی، رشته‌ست
age = int(input("چند سالته؟ "))    # اینجا رشته رو سریعاً به عدد صحیح تبدیل کردیم
print(f"اوه، پس {name} هستی و {age} سالته. خوش‌بحالت!")


جادوی f-string: متغیرها رو بنداز وسط متن
از اون موقع که f-string اومد (پایتون ۳.۶)، چسبوندن متغیرها به متن مثل آب خوردن شده. کافیه قبل از رشته یه f بذاری و اسم متغیر رو داخل آکولاد بنویسی. اینجوری هم خوشگل‌تره، هم سریع‌تر:


name = "سارا"
score = 19.5
print(f"دانشجوی عزیز {name}، نمرهٔ شما {score} شد. آفرین!")


بدون f-string باید می‌نوشتی "دانشجوی عزیز " + name + "، نمرهٔ شما " + str(score) + " شد." که هم زشته هم دردسر داره.

یه نمایش کوتاه با همهٔ هنرپیشه‌ها
بیا همهٔ اینا رو بذاریم توی یه سناریوی بامزه که مفهوم رو یه جا جمع کنه:


# فاکتور فروشگاه طنز
customer = "آقای خفن"
item = "کتاب پایتون"
quantity = 3
price_per_item = 49.99
is_member = True
discount = 5.0 if is_member else 0.0

total = quantity * price_per_item
final = total - discount

print(f"🧾 مشتری: {customer}")
print(f"📦 کالا: {item}")
print(f"🔢 تعداد: {quantity}")
print(f"💰 قیمت واحد: ${price_per_item}")
print(f"🏷️ تخفیف (عضویت): ${discount}")
print(f"💸 مبلغ نهایی: ${final:.2f}")   # :.2f یعنی دو رقم اعشار


همهٔ انواع داده اینجان: str (اسم مشتری و کالا)، int (تعداد)، float (قیمت و تخفیف)، bool (عضویت). تبدیل خودکار توسط عملگرها انجام شد. خروجی شسته‌رفته به لطف f-string.

جمع‌بندی: بی‌دردسر و با سرعت
متغیرها و انواع داده توی پایتون طوری طراحی شدن که مانع فکر کردنت نشی. مجبور نیستی اعلان کنی int age; یا نگران اندازه بایت باشی. یه اسم انتخاب کن، مقدار بده، و پایتون بقیه‌ش رو مدیریت می‌کنه. در عوض، ازت می‌خواد که خوانا و معنی‌دار بنویسی. چون بزرگترین قدرت پایتون، سادگی و دوست‌داشتنی بودنشه.

حالا که برچسب‌ها و جعبه‌های جادویی رو شناختی، برو چندتا ظرف پر و خالی کن، تبدیل نوع انجام بده و ببین چطور کدت از یه متن خشک تبدیل می‌شه به یه داستان تعاملی. این تازه اول راه خفن بودنه! 🐍✨

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

int
float
complex
bool
str
list
tuple
range
set
frozenset
dict
bytes
bytearray
memoryview
type
object
True, False, None (ثابت‌ها)
Ellipsis
NotImplemented

تصویر

انواع متغیر های از پیش تعریف شده python :

۱. ثابت‌های داخلی (Built-in Constants)
این‌ها در فضای نام داخلی (builtins) همیشه در دسترس هستند و نمی‌توانید مقدارشان را تغییر دهید (از پایتون ۳ به بعد):

تصویر

۲. متغیرهای ویژهٔ ماژول (Module-Level Dunder Variables)
در هر فایل پایتون (هر ماژول) این متغیرها به‌طور خودکار تعریف می‌شوند:

تصویر

۳. متغیرهای مهم در ماژول sys
با import sys می‌توانید به این متغیرها دسترسی داشته باشید. این‌ها جزو پرکاربردترین متغیرهای زمان اجرا هستند:

تصویر

۴. سایر متغیرهای از پیش تعریف‌شده در builtins
علاوه بر ثابت‌هایی که بالاتر گفتیم، در ماژول builtins نام‌های متغیر دیگری وجود دارند که شاید کمتر به چشم بخورند اما در واقع متغیر هستند (نه تابع):

copyright : یک رشته حاوی اطلاعات کپی‌رایت (با print(copyright) نمایش داده می‌شود).

credits : رشته‌ای برای نمایش اعتبارات (با credits در مفسر تعاملی).

license : رشتهٔ مجوز پایتون.

این سه، در واقع در site.py به builtins اضافه می‌شوند و متغیرهایی از نوع _Printer هستند که وقتی صدا زده می‌شوند متن را چاپ می‌کنند، ولی خودشان یک شیء (متغیر) هستند.