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→FalseNone == ""→FalseNone 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) হিসেবে।
বেস্ট প্র্যাকটিস
- None চেক করুন
is None/is not Noneদিয়ে (== দিয়ে না)। - মিউটেবল ডিফল্ট আর্গুমেন্ট এড়াতে
def func(lst=None): lst = lst or []패턴 ব্যবহার করুন। Optional[Type]টাইপ হিন্টিং-এ ব্যবহার করুন।