কম্পিউটার টিউটোরিয়াল

পাইথনে Null অবজেক্ট: None এবং এর ব্যবহার

Null vs None পাইথনে

পাইথনে null কীওয়ার্ড নেই। এর সমতুল্য হলো None। None হলো একটি সিঙ্গলটন অবজেক্ট যা NoneType ক্লাসের ইন্সট্যান্স। এটি "কোনো ভ্যালু নেই" বোঝাতে ব্যবহৃত হয়।

টাইপ চেক

print(type(None))  # 
# print(type(Null))  # NameError: name 'Null' is not defined

None-এর মূল বৈশিষ্ট্য

  • None == False → True (বুলিয়ান কন্টেক্সটে)
  • None == 0 → False
  • None == "" → False
  • None is None → True (আইডেন্টিটি চেক)
  • bool(None) → False
  • যেকোনো অপারেশন (যেমন None + 1, None.append()) → TypeError

None ভেরিয়েবল এসাইনমেন্ট

var_a = None
print('var_a is:', var_a)  # var_a is: None

# var_b ডিক্লেয়ার না করলে
# print(var_b)  # NameError: name 'var_b' is not defined

فار্ক: var_a = None মানে ভেরিয়েবল আছে কিন্তু ভ্যালু নেই। var_b ডিক্লেয়ার না করলে ভেরিয়েবলই নেই (NameError)।

None মেথড কল এরর

listA = [5, 9, 3, 7]
listA.append(18)
print(listA)  # [5, 9, 3, 7, 18]

listA = None
# listA.append(34)  # AttributeError: 'NoneType' object has no attribute 'append'
print(listA)  # None

সাধারণ ব্যবহার ক্ষেত্রে

  • ফাংশন থেকে "কোনো রিটার্ন নেই" বোঝাতে (return None ইমপ্লিসিট)।
  • ডিফল্ট আর্গুমেন্ট হিসেবে (def func(x=None):)।
  • অপশনাল ভ্যালু বা মিসিং ডেটা রিপ্রেজেন্ট করতে।
  • সেন্টিনেল ভ্যালু (Sentinel value) হিসেবে।

বেস্ট প্র্যাকটিস

  1. None চেক করুন is None / is not None দিয়ে (== দিয়ে না)।
  2. মিউটেবল ডিফল্ট আর্গুমেন্ট এড়াতে def func(lst=None): lst = lst or [] 패턴 ব্যবহার করুন।
  3. Optional[Type] টাইপ হিন্টিং-এ ব্যবহার করুন।
  1. পাইথনে গার্বেজ কালেকশন: মেমরি ম্যানেজমেন্ট বোঝা

  2. পাইথন ডিবাগার (pdb)

  3. পাইথনে অবজেক্ট-ওরিয়েন্টেড কনসেপ্ট সংক্ষেপে ব্যাখ্যা

  4. পাইথনে ফাইল অবজেক্টের অ্যাট্রিবিউটসমূহ