Python's Singleton 'None' Object

Python weirdness — 500 "None" values but only ONE object in memory I ran a small experiment today. I created a list: lst = [None for _ in range(500)] len(lst) Output: 500 So Python created 500 "None" objects… right? No. Now check this: all(x is None for x in lst) Output: True Every element is the SAME "None". Let’s inspect memory: len({id(x) for x in lst}) Output: 1 Only ONE memory address Python does NOT create new "None" objects. There is exactly one "None" in the entire interpreter. Whenever you write: x = None you are just referencing a pre-existing object. This is why Python developers always write: if value is None: and not: if value == None: Because "is" checks identity, and "None" has a guaranteed single identity (a language-level singleton). Other singleton objects in Python: • True • False • NotImplemented • Ellipsis (...) Takeaway: Python isn’t just a scripting language. It’s a carefully designed object system. Sometimes a tiny keyword like "None" teaches more about memory than a whole textbook. #Python #Programming #SoftwareEngineering #CodingTips #BackendDevelopment

To view or add a comment, sign in

Explore content categories