Kahibaro
Discord Login Register

بررسی نوع داده با `type()`

چرا به نوع داده نیاز داریم؟

در فصل «متغیرها و انواع داده» با خودِ انواع داده مثل int، float، str و … آشنا شده‌اید. در این بخش فقط روی یک سؤال تمرکز می‌کنیم:

چطور بفهمیم یک مقدار دقیقاً از چه نوعی است؟

پایتون برای همین کار تابعی به نام type() دارد.


تابع `type()` چیست؟

تابع type() یک تابع داخلی پایتون (built-in) است؛ یعنی بدون نصب هیچ چیز اضافه‌ای، همیشه در دسترس است.

کارش ساده است:

الگو:

python
type(مقدار_یا_متغیر)

مثال‌های ساده:

python
x = 10
print(type(x))      # نوع x چیست؟
print(type(3.14))   # نوع عدد اعشاری
print(type("سلام")) # نوع رشته

خروجی چیزی شبیه این خواهد بود:

text
<class 'int'>
<class 'float'>
<class 'str'>

این یعنی:

خواندن خروجی `type()`

وقتی type() را چاپ می‌کنید، شکلی مثل <class 'int'> می‌بینید.
این را فعلاً این‌طور در نظر بگیرید:

برای استفادهٔ روزمره در این مرحله، کافی است اسم داخل کوتیشن را بشناسید:

استفاده از `type()` روی متغیرها و مقادیر مختلف

چند مثال ترکیبی:

python
a = 5
b = 5.0
c = "5"
d = True
print(type(a))
print(type(b))
print(type(c))
print(type(d))

خروجی:

text
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>

می‌بینید که هرچند مقدارِ ظاهری بعضی‌ها شبیه هم است (مثل 5 و "5")، نوع آن‌ها فرق دارد.

همین تفاوت نوع، روی رفتار آن‌ها در عملیات مختلف تأثیر می‌گذارد (که در فصل‌های عملیات و تبدیل نوع بیشتر لمس می‌کنید).


`type()` در حالت تعاملی (REPL)

اگر پایتون را در حالت تعاملی (ترمینال) اجرا کنید، می‌توانید مستقیم نوع را بررسی کنید:

python
>>> type(42)
<class 'int'>
>>> type(3.14)
<class 'float'>
>>> type("Hello")
<class 'str'>

این روش برای آزمایش سریع و فهمیدن نوع نتیجهٔ یک عبارت خیلی مفید است.

مثلاً:

python
>>> type(1 + 2.0)
<class 'float'>

متوجه می‌شوید حاصل جمع یک int و یک float خودش float می‌شود.


بررسی نوع نتیجهٔ عملیات

گاهی نمی‌دانید نتیجهٔ یک عبارت چه نوعی می‌شود. type() کمک می‌کند:

python
x = 10 / 2
y = 10 // 2
print(x, type(x))
print(y, type(y))

خروجی:

text
5.0 <class 'float'>
5 <class 'int'>

با type() می‌بینید:

`type()` با ساختارهای داده (پیش‌نمایش ساده)

جزئیات این ساختارها در فصل «مجموعه‌های داده» می‌آید، اینجا فقط می‌خواهیم ببینیم type() چطور آن‌ها را نشان می‌دهد:

python
numbers = [1, 2, 3]
point = (10, 20)
person = {"name": "Ali", "age": 20}
unique_numbers = {1, 2, 3}
print(type(numbers))
print(type(point))
print(type(person))
print(type(unique_numbers))

خروجی:

text
<class 'list'>
<class 'tuple'>
<class 'dict'>
<class 'set'>

فعلاً فقط اسامی نوع‌ها (list, tuple, dict, set) را بشناسید؛ کاربردشان را بعداً یاد می‌گیرید.


ذخیره‌کردن نتیجهٔ `type()` در متغیر

خروجی type() خودش یک مقدار است که می‌توان آن را در متغیر گذاشت:

python
x = 10
t = type(x)
print(t)        # <class 'int'>

در پروژه‌های ساده ابتدای کار معمولاً نیازی به ذخیرهٔ نوع نیست، ولی دانستن این موضوع بد نیست.


نکته: اشتباهات رایج با `type()`

۱. فراموش کردن پرانتز

اشتباه:

python
x = 10
print(type x)   # خطا

درست:

python
print(type(x))

۲. بستن‌نکردن پرانتز بیرونی

اشتباه:

python
print(type(10)   # پرانتز بسته نشده → خطای SyntaxError

درست:

python
print(type(10))

۳. انتظار مقایسهٔ مستقیم بدون آگاهی

گاه مبتدی‌ها دنبال چیزی مثل این هستند:

python
x = 10
print(type(x) == "int")  # این کار درست نیست

چون type(x) یک رشته برنمی‌گرداند، بلکه یک شیء نوع است. راه‌های استاندارد برای مقایسه نوع (مثل isinstance) را در سطح مقدماتی معمولاً لازم ندارید و در فصل‌های بعدی که مناسب است با آن آشنا می‌شوید. در حال حاضر تمرکز شما باید روی فهمیدن و دیدن نوع با type() باشد، نه مقایسهٔ پیچیدهٔ آن.


استفادهٔ عملی: پیدا کردن علت خطا

خیلی وقت‌ها خطاهای عجیب فقط به خاطر «نوع اشتباه» هستند. در این مواقع:

  1. قبل از خطایی که می‌گیرید، print(type(متغیر)) اضافه کنید
  2. ببینید نوع آن چیزی است که انتظارش را داشتید یا نه

مثال:

python
age = input("سن خود را وارد کنید: ")
print(type(age))  # نوع را بررسی کن
# فرض کنید اینجا می‌خواهید با age جمع بزنید و خطا می‌گیرید

خروجی type(age) به شما نشان می‌دهد که مقدار ورودی یک str است، نه int؛ پس باید در فصل «تبدیل ورودی به عدد» آن را تبدیل کنید.


جمع‌بندی

در ادامهٔ مسیر، هر وقت مطمئن نبودید «این الان چه نوعی است؟»، از type() کمک بگیرید.

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!