Python Casting (পাইথন কাস্টিং)

টাইপ কাস্টিং কি?
প্রত্যেক প্রোগ্রামিং ল্যাংগুয়েজ এই টাইপ কাস্টিং এর ধারনা রয়েছে। টাইপ কাস্টিং এর মানে হল এক ধরনের ডাটা কে অন্য ধরনের ডাটা টাইপ এ পরিবর্তন করা । একে টাইপ কনভার্সন ও বলা হয়। যেমন – ফ্লোট সংখ্যা ৯.৬৩ কে ইন্টিজার সংখ্যা ৯ এ কনভার্ট করা। কিংবা কোন সংখ্যা জাতীয় স্ট্রিং কে ইন্টিজার বা ফ্লোটে কনভার্ট করা । 
 
পাইথন টাইপ কাস্টিং
পাইথনে দুই ধরনের টাইপ কাস্টিং দেখা যায়, এদের একটি হল ইমপ্লিসিট কাস্টিং এবং অপরটি হল এক্সপ্লিসিট কাস্টিং। এখন এই দুই ধরনের কাস্টিং এর ব্যাপারে দেখা যাক-
 
ইমপ্লিসিট কাস্টিং
ইমপ্লিসিট কাস্টিং এ প্রোগ্রামার এর হস্তক্ষেপ ছাড়া পাইথন নিজে নিজে টাইপ কাস্টিং করে নেয়। এক্ষেত্রে পাইথন সব সময় লোয়ার ডাটা টাইপ থেকে আপার ডাটা টাইপ এ কনভার্ট করে দেয়। এখন দেখা যাক এই লোয়ার ডাটা টাইপ থেকে আপার ডাটা টাইপ কনভারসন টা কিভাবে হয়-
 
integer_number = 100
float_number = 10.67
total = integer_number + float_number
print(total)
print(type(total))

## Output:
## 110.67
## <class 'float'>

 

এই উদাহারন টার দিকে খেয়াল করলে আমরা দেখতে পাব যে একটি ইন্টিজার টাইপ এর ডাটা এবং একটি ফ্লোট টাইপ ডাটা এর মধ্যয়ে যোগ অপারেশন করা হলে তা আমাদেরকে একটি ফ্লোট টাইপ ডাটা রিটার্ন করছে। অর্থাৎ অপারেশন করার সময় ইন্টিজার টাইপ এর ডাটা কে ফ্লোট এ কনভার্ট করা হয়েছে।
> ইমপ্লিসিট কনভারসন সব সময় কার্যকর নয়, নিচের উদাহারন টা দেখলে ইমপ্লিসিট কনভারসন এর একটি সিমাবদ্ধতা পাওয়া যাবে-
integer_number = 100
random_string ="hello"
addition = integer_number + random_string
print(type(addition))

## Output: TypeError: unsupported operand type(s) for +: 'int' and 'str'
 
আমরা এক্ষেত্রে টাইপ ইরর(Error) পাচ্ছি, অর্থাৎ, এই রকম অবস্থায় পাইথন ইমপ্লিসিট টাইপ কাস্টিং করতে পারে না, এই রকম অবস্থায় আমাদেরকে এক্সপ্লিসিট কাস্টিং এর আশ্রয় নিতে হয়।
পাইথন ইমপ্লিসিট টাইপ কাস্টিং এর ক্ষেত্রে সবসময় পাইথন ডাটা লস না হওয়া নিশ্চিত করে কিন্তু এক্সপ্লিসিট কাস্টিং এর ক্ষেত্রে কোন ডাটা টাইপ নির্দিষ্ট করে দেয়া হলে ডাটা লস হতে পারে।
 
 
এক্সপ্লিসিট কাস্টিংঃ
এক্সপ্লিসিট কাস্টিং এ প্রোগ্রামার কোন ডাটা টাইপ কে প্রয়োজন অনুযায়ী ডাটা টাইপ এ কনভার্ট করে নিতে পারে। এক্সপ্লিসিট কাস্টিং এর জন্য পাইথনে কন্সট্রাক্টর ফাংশন ব্যাহার করা হয়। কন্সট্রাক্টর ফাংশন গুলু হল, int(), float(), str() ইত্যাদি।
উপরের উদাহারনটি যদি আমরা এক্সপ্লিসিট কাস্টিং করে করা হয় তাহলে টাইপ ইরর হবে না,
integer_number = 100
random_string ="hello"
integer_to_string = str(integer_number)
addition = integer_to_string + random_string
print(addition)
print(type(addition))

## Output:
## 100hello
## <class 'str'>
কিছু টাইপ কাস্টিং ফাংশনঃ
*int() -> ইন্টিজার লিটেরাল থেকে ইন্টিজার টাইপ অবজেক্ট এ কনভার্সন ।
*float() -> ফ্লোট লিটেরাল থেকে ফ্লোট টাইপ অবজেক্ট এ কনভার্সন ।
*str() -> স্ট্রিং লিটেরাল থেকে স্ট্রিং টাইপ অবজেক্ট এ কনভার্সন।
উদাহরন

Example 1:

integer_number = 100
float_number = 10.67

total = integer_number + float_number
print(total)
print(type(total))

# Output:
# 110.67
# <class 'float'>

Example 2:

integer_number = 100
random_string = "hello" 

addition = integer_number + random_string
print(type(addition))

# Output:
# TypeError: unsupported operand type(s) for +: 'int' and 'str'

Example 3:

integer_number = 100
random_string = "hello" 
integer_to_string = str(integer_number)
addition = integer_to_string + random_string

print(addition)
print(type(addition))

# Output:
# 100hello
# <class 'str'>

Example 4:

num= 100
float_num = float(100)

print(float_num)
print(type(float_num))

# Output
#100.0
#<class 'float'>

Example 5:

num= 100
float_num = float(100)
print(float_num)
print(type(float_num))

# Output
#100.0
#<class 'float'>

str_num= str(float_num) + "50"
print(str_num)
print(type(str_num))

# Output
#100.050
#<class 'str'>

 

এসো নিজে করি
অনুশীলনঃ
১। একটি ইন্টিজার(Integer) ও একটি ফ্লোট (Float) ডাটা টাইপের ভ্যালু যোগ করে যোগফল রিটার্ন করুন
২। দু ‘টি ফ্লোট ভ্যালু যোগ করে ইন্টিজারে কনভার্ট করুন ।
৩। একটি ইন্টিজার ও একটি স্ট্রিং ভ্যালু যোগ করুন ।
৪। একটি স্ট্রিং কে ইন্টিজারে কনভার্ট করে দেখুন কি রেজাল্ট আসে ।
৫। দুটি ইন্টিজার ভ্যালু যোগ করে স্ট্রিং এ কনভার্ট করুন ।
ইন্টারভিউ প্রশ্নোত্তর
 গুরুত্বপূর্ন প্রশ্নসমুহ
১। পাইথনে টাইপকাস্টিং কি?
২। পাইথনে টাইপ কাস্টিং এর প্রকারগুলো আলোচনা করুন।
৩। এক্সপ্লিসিট কাস্টিং কখন করতে হয় ?
৪। একটি ইন্টিজার ও একটি স্ট্রিং যোগ করলে আউটপুট কি হবে?
৫। একটি ইন্টিজার ও একটি ফ্লোট নাম্বার যোগ করলে যোগফলের ডাটা টাইপ কি হবে?