Casting چیست؟
- تبدیل یک نوع داده به نوع دیگر
- دو نوع کلی: ضمنی (Implicit) و صریح (Explicit)
تبدیل ضمنی (Implicit Casting)
- خود پایتون بدون دخالت برنامهنویس نوع رو تبدیل میکنه
- معمولاً در عملیات ریاضی بین انواع مختلف عددی رخ میده
x = 5 # int
y = 2.5 # float
z = x + y
print(z, type(z))
7.5 <class 'float'>
- چون
float دقت بیشتری داره، پایتون int رو به float تبدیل میکنه تا اطلاعات از دست نره
تبدیل صریح (Explicit Casting)
- برنامهنویس خودش دستور میده که یک نوع به نوع دیگه تبدیل بشه، با استفاده از توابع تبدیل
int() |
صحیح |
float() |
اعشاری |
str() |
رشته |
bool() |
بولی |
list() |
لیست |
tuple() |
تاپل |
set() |
ست |
complex() |
مختلط |
a = "25"
b = int(a) # str -> int
print(b, type(b))
25 <class 'int'>
مثالهای ترکیبی
print(int(3.99)) # 3 -> قطع اعشار (نه گرد کردن)
print(float("3.14")) # 3.14
print(str(100)) # '100'
print(list("abc")) # ['a', 'b', 'c']
print(tuple([1,2,3])) # (1, 2, 3)
نکته: خطا در تبدیل نامعتبر
ValueError: invalid literal for int() with base 10: 'hello'
- تبدیل صریح فقط وقتی کار میکنه که محتوا با نوع مقصد سازگار باشه (مثلاً رشتهای که واقعاً عدده)
جمعبندی تفاوت
| Implicit |
خود پایتون، خودکار |
5 + 2.5 |
| Explicit |
برنامهنویس، با تابع |
int("5") |