از دیدگاه برنامه نویسی، Casting به معنای تبدیل کردن اشیاء از نوعی به نوع دیگر است. Casting در پایتون به فرایندی گفته میشود که در طی آن ماهیت اشیا تغییر میکند. یعنی مقداری با نوع رشته به مقداری از نوع عدد صحیح یا اعشار تبدیل میشود. پایتون از دو نوع Casting مختلف، یعنی تبدیل نوع «ضمنی» (Implicit) و تبدیل نوع «صریح» (Explicit) پشتیبانی میکند. در زبان برنامه نویسی پایتون انواع مختلفی از داده وجود دارند. برای مثال میتوان به اعداد، دنبالهها و غیره اشاره کرد. فرض کنید در حال ساخت برنامهای هستیم که دادههای ورودی را از کاربر دریافت میکند. دادههای ارسال شده توسط کاربر از نوع رشته هستند. اما میخواهیم با آنها همانند اعداد رفتار کنیم. در این لحظه باید از سازوکار Casting در پایتون کمک بگیریم.
آنچه در این مطلب میآموزید:
-
با انواع داده عددی، رشته و غیره به شکل کلی آشنا میشوید.
-
با مفهوم Casting در پایتون و روش انجام آن بین انواع مختلف داده آشنا میشوید.
-
یاد میگیرید که چگونه دادههایی از نوع رشته را به اعداد صحیح و اعشار تبدیل کنید.
-
انواع تبدیل نوع ضمنی و صریح را میشناسید و میدانید چه موقع از کدام استفاده میشود.
-
متوجه میشوید که برای تبدیل Float به Integer از کدام نوع تبدیل استفاده کنید.
-
با متد str و پارامترهای آن آشنا شده و یاد میگیرید چطور اعداد را به رشته تبدیل کنید.



در این مطلب از مجله فرادرس، مفهوم Casting در پایتون را بررسی کردهایم. ابتدا این مفهوم را به شکل کامل معرفی کرده و انواع آن را توضیح میدهیم. سپس «Data Type»-های مختلف را به طور خلاصه معرفی میکنیم. در انتها هم با کمک مثالهای متنوع روشهای مختلف اجرای Casting در پایتون را توضیح میدهیم.
Casting در پایتون چیست؟
Casting در پایتون به معنای تبدیل کردن داده از نوعی به نوع دیگر است. برای درک بهتر موضوع، مثالی از دنیای واقعی میزنیم. فرض کنید شخصی در حال سفر از آمریکا به ایران است. این شخص قبل از سفر تصمیم گرفته که کالایی را از فروشگاههای آمریکا خریداری کرده و به ایران بیاورد. اما پول در دسترس او از نوع ریال است. بنابراین قبل از خرید باید نوع پول خود را از ریال به دلار تبدیل بکند. این عملیات دقیقا شبیه به انجام تبدیل نوع یا Casting در پایتون است.
در پایتون، متدهای مختلفی برای تبدیل کردن مقادیر از نوعی به نوع دیگر تعریف شدهاند. چند مورد از این متدها را در فهرست پایین معرفی کردهایم.
- برای تبدیل اشیاء دیگر به اشیائی از جنس رشته باید از متد str() استفاده بکنیم.
- برای تبدیل کردن دیگر اشیا به اشیائی از جنس اعداد اعشاری متد float() را به کار میبریم.
- برای تبدیل کردن دیگر اشیا به «اعداد صحیح» یا «Integer» هم باید از متد int() استفاده بکنیم.
این متدها و دیگر متدهای شبیه به آنها برای پیادهسازی عملیات «تبدیل نوع» (Type Casting) در پایتون به کار برده میشوند.
اما خود مفهوم Casting در پایتون نیز به دو دسته اصلی تقسیم میشود.
- «تبدیل نوع صریح» (Explicit type Casting): این نوع از Casting توسط خود برنامه نویس و با استفاده از متدهای مخصوص این کار انجام میشود.
- «تبدیل نوع ضمنی» (Implicit type Casting): این نوع از Casting توسط مفسر پایتون و با توجه به موقعیت موجود به صورت خودکار انجام میشود.
در ادامه موارد بالا را بیشتر توضیح دادهایم. برای کمک به درک بهتر سلسلهمراتب Casting در پایتون، به نمودار پایین توجه بکنید.

تبدیل نوع صریح
وقتی داده مورد نظر با کمک خود برنامه نویس و به صورت دستی از نوعی به نوع دیگر تبدیل شود به آن تبدیل نوع صریح یا Explicit گفته میشود. برای اجرای تبدیل نوع Explicit از توابع درونی و مخصوص پایتون، استفاده میکنیم. به عنوان مثال میتوان به توابع زیر اشاره کرد. روش تبدیل نوع Explicit در پایتون معمولا با نامهای تبدیل نوع صریح یا به صورت خلاصه «Casting در پایتون» شناخته میشود.
- Int()
- Float()
- hex()
- oct()
- str()
- و غیره
تبدیل نوع ضمنی
تبدیل نوع ضمنی در پایتون یعنی مفسر این زبان، هر زمان که لازم باشد، خودش نوع دادهها را تغییر میدهد. این عملیات به شکل خودکار انجام میشود. بعضی از نوعهای داده، مانند Int در پایتون کوچک هستند و بعضی دیگر مانند Float بزرگاند. اگر از دو مقدار با نوعهای متفاوت در محاسبات خود استفاده کنید، مفسر پایتون به صورت خودکار نوع مقدار کوچکتر را به نوع بزرگتر تبدیل میکند. هدف از انجام این کار آن است که هیچ داده یا اطلاعاتی از دست نرود.

برای مثال، در زمان جمع بستن نوع داده Int و Float در پایتون، نوع Int به صورت خودکار به Float تبدیل میشود. به این تغییر خودکار نوع دادهها، «تبدیل ضمنی» یا (Implicit Conversion) گفته میشود.
تا به اینجای مطلب با مفهوم Casting در پایتون و علت استفاده از آن آشنا شدهاید. در ادامه انواع وظایف مربوط به Casting را با کمک مثالهای مختلف حل میکنیم. در صورت تمایل به مطالعه چنین مطالبی پیشنهاد میکنیم از اپلیکیشن مجله فرادرس استفاده بکنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
انواع داده در پایتون
قبل از بررسی مثالهای مربوط به Casting در پایتون بهتر است به شکل مختصر با «انواع داده» (Data Types) در پایتون آشنا شویم. نوع داده در پایتون به معنای دستهبندی است که برای تشخیص و اجرای صحیح عملیات مختلف بر روی عناصر دادهای انجام میشود. در پایتون دادههای مختلفی مانند اعداد، اعداد اعشاری، رشتهها و غیره وجود دارند. نوع داده هم نوع مقدار مورد نظر را مشخص میکند و هم تایید میکند که چه نوع عملیاتی میتوان بر روی آن مقدار خاص انجام داد.
به طور کلی ۵ نوع اصلی برای دادهها در پایتون تعریف شده است.
دادههای عددی و دنبالهها هم هر کدام شامل چند زیرمجموعه دیگر هستند. در تصویر زیر این ۵ نوع را همراه با زیرمجموعه آنها مشاهده میکنید.

مثال های مربوط به Casting در پایتون
در این بخش از مطلب با کمک چند مثال مختلف، انواع روشهای Casting در پایتون را بررسی میکنیم.
جمع کردن نوع رشته و عدد با استفاده از تبدیل نوع صریح
در زبان پایتون میتوان مقدار نوع رشته را با مقداری از نوع عدد صحیح یا اعشاری جمع بست. البته کاراکتر مورد نظر، نوع رشته، باید به شکل ارقام عددی یا قابل تبدیل به عدد باشد. برای رسیدن به نتیجه دلخواه، فقط کافی است که نوع رشته را به مقداری با نوع Int تبدیل کنیم. برای انجام این کار تابع int() را به کار میبریم.
در سینتکس پایین، روش تبدیل نوع رشته به عدد صحیح را نشان دادهایم.
البته مثال بالا باعث برخواستن خطای ValueError میشود. زیرا رشته value معادل عدد نیست. اما روش انجام کار به همین صورت و با کمک متد int() است. در مثال پایین، مقداری با نوع رشته (56) داریم. از تابع int() کمک گرفته و آن را به عدد صحیح تبدیل میکنیم. سپس مقادیر را با همدیگر جمع بسته و در نهایت نتیجه را اعلام میکنیم.
بعد از نوشتن کد بالا در ویرایشگر پایتون و اجرای آن، پیغام زیر به عنوان خروجی در کنسول چاپ میشود.
The Sum of both the numbers is: 100
یاد گرفتن پایتون با مشاهده فیلمهای آموزشی فرادرس
روشهای متنوعی برای یادگیری برنامه نویسی با پایتون وجود دارند. برای مثال میتوان به مطالعه کتابهای آموزشی، استفاده از آموزشگاههای حضوری و کلاسهای رسمی اشاره کرد. پایتون همیشه در حال پیشرفت و بهتر شدن است. سادگی، انعطافپذیری و قدرت زیاد آن، سه مورد از دلایل اهمیت و کاربرد گسترده پایتون هستند . به دلیل وجود سینتکس بسیار روان و نزدیک به زبان انسان، فرایند یادگیری پایتون ساده است. افراد علاقهمند خیلی سریع اصول ابتدایی آن را یاد میگیرند. اما یادگیری مباحث پیشرفته پایتون به تمرین و تلاش بیشتری احتیاج دارد.

استفاده از منابع یادگیری قدرتمندی مانند فیلمهای آموزشی کمک زیادی به درک مفاهیم پیشرفته میکند. برای همین است که این فیلمها نسبت به دیگر منابع از کیفیت و بازدهی بیشتری برخوردار هستند. فرادرس، فیلمهای خوبی در حوزه آموزش پایتون تولید کرده است. فیلمهای فرادرس به دلیل استفاده از اساتید باتجربه و تکنیکهای پیشرفته، کیفیت بالایی دارند. در این فیلمها از مطالب ابتدایی تا مفاهیم بسیار پیشرفته مانند شبکههای عصبی و یادگیری ماشین آموزش داده میشوند. استفاده از فیلمهای فرادرس نسبت به سایر روشها بسیار مقرونبهصرفهتر است.
در ادامه چند مثال دیگر درباره Casting در پایتون را بررسی میکنیم.
Casting در پایتون: تبدیل Int به Float
در پایتون برای تبدیل کردن اعداد صحیح یا مقادیر رشتهای به اعداد اعشاری میتوانیم از متد float() استفاده بکنیم. این متد، همیشه فقط یک پارامتر دریافت میکند. این پارامتر همان مقداری است که باید به عدد اعشار تبدیل شود.
«اعداد صحیح» (Integer) در پایتون، فقط قسمت کامل مقادیر عددی را نمایش میدهند. این نوع داده، بخش اعشار را در نظر نمیگیرد. برای آشنایی با این «Data Type» پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه بکنید.
سینتکس استفاده از متد float() بسیار ساده و روان است.
مثال تبدیل Int به Float
برای درک بهتر این مطلب، مثال سادهای را بررسی کردهایم. میدانیم که همیشه گزینههای دیگری به عنوان کمک هزینه یا پرداختیهای اضافی به مبلغ اصلی حقوق، افزوده میشوند. بنابراین حتی بعضی از اوقات ممکن است رقم اصلی حقوق به صورت اعشاری در بیاید. در نتیجه برای انجام محاسبات مختلف بر روی حقوق دریافتی باید ابتدا مقدار وارد شده توسط کاربر را به «عددی با ممیز شناور» (Floating-PoInt Number) تبدیل کنیم. زیرا همیشه داده دریافت شده با متد input از نوع رشته است.
بعد از نوشتن و اجرای کد بالا، پیغام زیر به عنوان خروجی در کنسول پایتون چاپ میشود.
Salary converted into floating-point: 25000.0
Salary after adding bonus: 31250.0
Casting در پایتون: Float به Int
برای تبدیل کردن مقادیر رشتهای یا سایر نوعها به اعداد صحیح در پایتون از متد int() استفاده میکنیم. به منظور یادگیری حرفهای نکات مختلف زبان پایتون، پیشنهاد میکنیم که فیلم آموزش برنامه نویسی پایتون همراه با ارائه مثال های عملی در Python + گواهینامه را در فرادرس مشاهده بکنید. با هدف کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار دادهایم.
متد int() دو پارامتر مجزا دریافت میکند. در کادر پایین سینتکس استفاده از این متد را نشان دادهایم.
همینطور که مشاهده میکنید متد int() پارامترهای value و base را دریافت کرده است. در فهرست پایین این پارامترها را معرفی کردهایم.
- value: این پارامتر همان مقداری است که باید به عدد صحیح تبدیل شود.
- base: این پارامتر هم پایه عدد صحیح را مشخص میکند. وجود پارامتر base اختیاری است. مقدار این پارامتر به صورت پیشفرض برابر با ۱۰ است. پایه ۱۰ در ریاضیات به معنای همان اعداد صحیح طبیعی است که به صورت روزانه در محاسبات خود استفاده میکنیم.

از اعداد دیگری هم میتوانیم به عنوان پایه استفاده کنیم. تمام این دستگاههای عددی از نوع عدد صحیح هستند زیرا مقدار اعشاری ندارند. اما پایههای آنها تفاوت میکند.
- پایه 8: این پایه برای نمایش اعداد اوکتال یا در مبنای ۸ به کار برده میشود. در واقع وقتی مقدار 8 را به عنوان پارامتر base مینویسیم، یعنی عدد داده شده در مبنای ۸ است. باید آن را به عدد صحیح در مبنای ۱۰ تبدیل بکنیم.
- پایه 16: این پایه برای نمایش اعداد هگزادسیمال یا در مبنای ۱۶ به کار برده میشود. استفاده از 16 به جای base به معنای آن است که عدد داده شده در مبنای ۱۶ است. باید آن را به عدد صحیح در مبنای ۱۰ تبدیل بکنیم.
- پایه 2: این پایه برای نمایش اعداد باینری (۰ و ۱) به کار برده میشود. در واقع وقتی مقدار 2 را به عنوان پارامتر base مینویسیم، یعنی عدد داده شده در مبنای ۲ است. میخواهیم آن را به عدد صحیح در مبنای ۱۰ تبدیل بکنیم.
مثال: تبدیل اعشار و رشته به عدد صحیح
در این قسمت از مطلب با کمک مثال سادهای روش استفاده از متد int() را برای تبدیل کردن مقادیری با نوعهای دیگر به عدد صحیح بررسی کردهایم.
بعد از اجرای کد بالا، پیغام زیر به عنوان خروجی در کنسول پایتون چاپ میشود.
String converted into integer: 1101
The floating-point number converted into integer: 45
اجرای پروژههای عملی برای یادگیری پایتون
یادگیری برنامه نویسی همراه با اجرای پروژههای واقعی به افزایش بهرهوری هرچه بیشتر منتهی میشود. برای همین مجموعه کاملی از فیلمهای پروژهمحور پایتون توسط فرادرس، تولید و منتشر شدهاند. این دورهها در کنار تمرکز بر پروژههای عملی، مفاهیم پایه و مهارتهای پیشرفته برنامه نویسی را هم آموزش میدهند. با مشاهده آموزشهای پروژهمحور میتوانید آماده ورود به بازار کار شده و ایدههای شخصی خود را پیادهسازی کنید.
در پایین، چند مورد از فیلمهای آموزش پروژهمحور زبان پایتون را معرفی کردهایم.
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی، هدایت شده و از فیلمهای پروژهمحور بیشتری دیدن کنید.

تبدیل Int به رشته
در پایتون برای تبدیل کردن اشیا مختلف به رشته میتوانیم از تابع str() استفاده بکنیم.
سینتکس متد int
سینتکس لازم برای استفاده از این متد بسیار ساده بوده و به راحتی قابل درک است.
متد str() سه پارامتر مختلف دریافت میکند. وجود پارامتر اول اجباری است اما پارامترهای بعدی اختیاری هستند.
- object: در جای این پارامتر، مقدار یا شیئی را قرار میدهیم که باید به رشته تبدیل شود.
- encoding: استاندارد مورد نظر برای رمزگذاری دادهها را به عنوان پارامتر دوم مینویسیم.
- errors: در پارامتر سوم به پایتون میگوییم که اگر عملیات تبدیل یا رمزگشایی پارامتر اول با خطا روبهرو شد، چه عکسالعملی نشان بدهد.
در بخش پایین به صورت خلاصه تمام این پارامترها را بررسی کردهایم.
object
وجود پارامتر object الزامی است. این پارامتر میتواند شامل هر مقدار یا شیء مختلفی باشد. متد str() هر دادهای را به رشته تبدیل میکند. البته اگر هیچ مقداری در این پارامتر قرار ندهیم، متد str() رشته خالی برمیگرداند.
encoding
وظیفه پارامتر encoding آن است که نوع رمزگذاری شیء object را مشخص کند. وجود این پارامتر اختیاری است. اگر هیچ مقداری برای آن ننویسیم، مفسر پایتون از مقدار پیشفرض یعنی UTF-8 استفاده میکند.
errors
بعضی وقتها در زمان تبدیل مقدار یا رمزگذاری آن در قالب رشته، ممکن است خطایی رخ بدهد. شاید برنامه نویس بخواهد در زمان روی دادن این نوع از خطاها، برنامه رفتار خاصی از خود نشان بدهد. در این پارامتر همان رفتارها را تعریف میکنیم. در واقع مقدار پارامتر errors تعیین میکند که هنگام شکست عملیات رمزگذاری، چه پاسخی برگردانده شود.
مثال: تبدیل عدد صحیح به رشته
در کادر پایین با کمک مثال سادهای روش استفاده از تابع str() را بررسی میکنیم.
بعد از اجرای کد بالا، پیغام زیر به عنوان خروجی در کنسول پایتون چاپ میشود.
The converted string is: 55
مثال: تبدیل داده باینری به رشته
در کادر پایین با کمک تابع str() دادههایی از نوع باینری را به رشته در پایتون تبدیل کردهایم. در ضمن، عملکرد پارامتر errors را هم در زمان برخورد با مشکل بررسی کردیم.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون چاپ میشود.
<class 'bytes'>
Casting with errors='ignore': 100
Casting with errors='replace': 100 �
Casting with errors='strict': Error occurred! 'utf-8' codec can't decode byte 0xff in position 4: invalid start byte
تمام کدهای کادر بالا را در فهرست پایین، توضیح دادهایم.
- عبارت b’100 xff ‘ از نوع دادههای باینری است. xff نشان دهنده مقداری است که در utf-8 نمیتوان به کاراکتر تبدیل کرد.
- دستور type(binary_data) برای نمایش نوع داده در خروجی، نوشته شده است.
- در خط ۴ از پارامتر errors=’ignore’ استفاده کردیم. یعنی اگر داده باینری قابل تبدیل به رشته نبود آن را نادیده بگیر. بنابراین در نمایش این داده، کاراکتر مشکلدار xff حذف شده است.
- در خط ۷ از پارامتر errors=’replace’ استفاده کردیم. یعنی اینکه بایت غیرقابل تبدیل با کاراکتر � جایگزین بشود. در نتیجه در زمان چاپ این داده، خروجی به شکل 100 � نمایش داده شده است.
- در خط ۱۱ پارامتر آخر را به شکل errors=’strict’ تعریف کردهایم. این حالت همان شکل پیشفرض است. یعنی اگر بایتی قابل نمایش نبود خطا رخ بدهد. در این مثال، بایت xff باعث ایجاد خطای UnicodeDecodeError میشود. با کمک بلوک try except در پایتون این خطا مدیریت شده است. بنابرین برنامه کرش نکرده و فقط پیغام خطا در خروجی چاپ میشود.

مثال: تبدیل رشته به متن
برای Casting رشته به عدد صحیح از تابع int() استفاده میکنیم. روش کار با این تابع را در بخشهای بالاتر توضیح دادهایم. در این قسمت فقط مثال دیگری را درباره کار با این تابع بررسی میکنیم.
بعد از اجرای کد بالا، پیغام زیر به عنوان خروجی در کنسول پایتون چاپ میشود.
جمعبندی
در این مطلب از مجله فرادرس، مفهوم Casting در پایتون را توضیح دادهایم. پایتون زبان برنامه نویسی ساده و انعطافپذیری است. برای همین افراد زیادی پایتون را یاد میگیرند. در بعضی از زبانهای دیگر، برنامه نویس خودش باید تمام عملیات Casting را انجام بدهد، اما در پایتون اینطور نیست. Casting به معنی تبدیل کردن داده از نوعی به نوع دیگر، مثل تبدیل رشته به عدد یا عدد صحیح به اعشار است.
دو نوع تبدیل صریح یا Explicit و ضمنی یا Implicit در پایتون وجود دارند. در روش تبدیل صریح، برنامهنویس با کمک توابعی مثل int() و float() و str() نوع دادههای مختلف را تغییر میدهد. اما در تبدیل ضمنی، مفسر پایتون خودش هنگام نیاز انواع مختلف را به هم تبدیل میکند. در این مطلب انواع دادههای پایتون را معرفی کرده و با مثالهای مختلف نحوه تبدیل آنها به هم را بررسی کردهایم. این مطلب نشان میدهد که چگونه با کمک Type Casting دادهها را برای انجام محاسبات یا پردازش مناسب آماده کنیم.
source
