pass স্টেটমেন্ট কী?
pass হলো পাইথনের একটি নাল (null) স্টেটমেন্ট যা কিছুই করে না। এটি সিনট্যাক্সিক্যালি খালি ব্লক (empty block) থাকতে দেয় না বলে প্লেসহোল্ডার হিসেবে কাজ করে। ইন্টারপ্রেটার এটিকে পড়ে কিন্তু এক্সিকিউট কিছু করে না।
কেন দরকার?
পাইথনে ইনডেন্টেশন-ভিত্তিক ব্লক (if, for, while, class, def, try, with) খালি রাখা যাবে না। খালি রাখলে IndentationError আসবে। pass লিখলে ব্লকটি ভ্যালিড হয়, কিন্তু কোনো অপারেশন হয় না।
সিনট্যাক্স
pass # কোনো আর্গুমেন্ট নেই, শুধু কিওয়ার্ড
ব্যবহারিক উদাহরণসমূহ
১. ক্লাস ডেফিনিশনে প্লেসহোল্ডার
class CheckingAccount:
def __init__(self, name):
self.name = name
class SavingsAccount:
pass # পরে ইমপ্লিমেন্ট করব
২. লুপে নির্দিষ্ট আইটেম স্কিপ করা
books = ['The Power of Habit', 'Atomic Habits', 'Hooked', 'Mini Habits']
for book in books:
if book == 'Atomic Habits':
pass # এই বই স্কিপ করব, পরে হ্যান্ডেল করব
else:
print(book)
print('Program complete.')
আউটপুট:
The Power of Habit
Hooked
Mini Habits
Program complete.
৩. try-except-এ নির্দিষ্ট এক্সেপশন ইগনোর করা
try:
risky_operation()
except SpecificError:
pass # এই এরর ইগনোর করব, লগ করব না
except Exception as e:
log_error(e)
৪. ফাংশন ডেফিনিশনে স্টাব (Stub)
def future_feature():
pass # TODO: implement later
pass বনাম ... (Ellipsis)
পাইথন ৩+ তে ... (Ellipsis)ও প্লেসহোল্ডার হিসেবে কাজ করে। কিন্তু pass সেমান্টিক্যালি স্পষ্ট এবং সর্বত্র গ্রহণযোগ্য।
নিষ্কর্ষ
pass হলো পাইথনে "এখানে কোড আসবে কিন্তু এখন নেই" বলে কম্পাইলারকে জানানোর স্ট্যান্ডার্ড উপায়। এটি কোডকে সিনট্যাক্সিক্যালি ভ্যালিড রাখে এবং ভবিষ্যতের ইমপ্লিমেন্টেশনের জন্য স্পেস সৃষ্টি করে।