قبلا با انواع داده در پایتون آشنا شدید. گاهی لازم است که نوع دادهای را به دیگری تبدیل کنیم. در شرایطی، این عمل را مفسر پایتون به صورت خودکار انجام میدهد و گاهی لازم است خودمان این کار را انجام دهیم. در این بخش، با تبدیل نوع داده در پایتون آشنا خواهید شد.
تبدیل نوع داده در پایتون
گاهی اوقات لازم است در برنامههای خود، یک نوع داده را به دیگری تبدیل کنیم؛ مثلا یک عدد integer را به float تبدیل کنیم. به فرایند تبدیل یک نوع داده ( integer ، string ، float و غیره) به نوع دادهی دیگر، Type conversion یا تبدیل نوع گفته میشود. پایتون دارای دو نوع تبدیل نوع داده است:
- تبدیل ضمنی نوع داده | Implicit Type Conversion
- تبدیل صریح نوع داده | Explicit Type Conversion
تبدیل نوع داده در پایتون: تبدیل ضمنی
در این نوع تبدیل، پایتون به صورت خودکار یک نوع داده را به نوع دیگر تبدیل میکند. این فرایند نیازی به دخالت کاربر ندارد. بیایید مثالی را ببینیم که در آن پایتون برای جلوگیری از از دست رفتن دادهها، نوع دادهی integer را به float تبدیل میکند.
مثال #۱: تبدیل integer به float
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo
print("datatype of num_int:",type(num_int))
print("datatype of num_flo:",type(num_flo))
print("Value of num_new:",num_new)
print("datatype of num_new:",type(num_new))
خروجی #۱:
datatype of num_int: <class 'int'>
datatype of num_flo: <class 'float'>
Value of num_new: 124.23
datatype of num_new: <class 'float'>
در برنامهی بالا،
- ما دو متغیر num_int و num_flo را مقداردهی میکنیم و مجموع مقادیر آنها را در متغیر جدیدی با نام num_new ذخیره میکنیم.
- نوع دادههای این سه شی، و مقدار دادهی num_new را در خروجی چاپ میکنیم.
- در خروجی میتوانیم ببینیم که نوع دادهی num_int یک integer است؛ در حالی که num_flo یک float است.
- همچنین میبینیم که num_new نیز float است؛ زیرا پایتون همواره نوع دادههای کوچکتر (در اینجا integer ) را برای جلوگیری از از دست رفتن دادهها، به نوع بزرگتر (در اینجا float) تبدیل میکند.
حال ببینیم که اگر یک رشته را با یک عدد صحیح جمع کنیم چه اتفاقی میافتد و پایتون چگونه این کار را انجام میدهد.
مثال #۲: جمع دادهی string با integer
num_int = 123
num_str = "456"
print("Data type of num_int:",type(num_int))
print("Data type of num_str:",type(num_str))
print(num_int+num_str)
خروجی #۲:
Data type of num_int: <class 'int'>
Data type of num_str: <class 'str'>
Traceback (most recent call last):
File "python", line 7, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
در مثال بالا،
- ما دو متغیر num_int و num_str را با هم جمع میکنیم. اولی از نوع integer و دومی از نوع string است.
- همانطور که در خروجی میبینیم، TypeError را دریافت کردهایم. پایتون در چنین شرایطی قادر به انجام تبدیل ضمنی نیست.
با این حال، برای این نوع تبدیل داده در پایتون، راه حلی وجود دارد که به عنوان تبدیل صریح شناخته میشود.
تبدیل نوع داده در پایتون: تبدیل صریح
در تبدیل نوع صریح، کاربران نوع دادهی یک شی را به نوع دادهی مورد نظر تبدیل میکنند. ما برای انجام تبدیل صریح نوع داده، از توابعی مانند ()int و ()float و ()str و غیره استفاده میکنیم.
این روش تبدیل نوع داده در پایتون تایپ کستینگ (Type casting) نیز نامیده میشود.
مثال #۳: جمع دادهی string با integer به استفاده از تبدیل صریح
num_int = 123
num_str = "456"
print("Data type of num_int:",type(num_int))
print("Data type of num_str before Type Casting:",type(num_str))
num_str = int(num_str)
print("Data type of num_str after Type Casting:",type(num_str))
num_sum = num_int + num_str
print("Sum of num_int and num_str:",num_sum)
print("Data type of the sum:",type(num_sum))
خروجی #۳:
Data type of num_int: <class 'int'>
Data type of num_str before Type Casting: <class 'str'>
Data type of num_str after Type Casting: <class 'int'>
Sum of num_int and num_str: 579
Data type of the sum: <class 'int'>
در مثال بالا،
- متغیرهای num_int و num_str را مقداردهی میکنیم و نوع دادهی آنها را در خروجی چاپ میکنیم.
- نوع دادهی num_str را با استفاده از دستور int() از نوع string به نوع integer تبدیل میکنیم.
- حال که نوع هر دو داده یکسان است، پایتون قادر خواهد بود آنها را با یکدیگر جمع کند.
- در آخر مقدار و نوع دادهی num_sum را در خروجی چاپ میکنیم. مقدار این متغیر، همان طور که انتظار میرفت، integer است.
لیست کامل توابع تبدیل صریح در زیر آورده شده است:
dict() | str() |
set() | int() |
frozenset() | float() |
bool() | complex() |
bytes() | complex() |
bytearray() | list() |
memoryview() | tuple() |
range() |
نکات مهم تبدیل نوع داده در پایتون
- تبدیل نوع، تبدیل شی از یک نوع داده به نوع دیگر است.
- تبدیل ضمنی نوع داده، به طور خودکار توسط مفسر پایتون انجام میشود. این تبدیل، برای جلوگیری از از دست رفتن دادهها انجام میشود.
- تبدیل صریح نوع داده، تایپ کستینگ یا type casting نیز نامیده میشود. انواع دادهها با استفاده از توابع از پیش تعریف شدهای، توسط کاربر تبدیل میشوند.
- در تایپ کستینگ، ممکن است از دست رفتن دادهها رخ دهد؛ چرا که ما اجبارا یک نوع داده را به دیگری تبدیل میکنیم.