On Tue, 12 May 2026 at 09:06, Rob Cliffe via Python-list <[email protected]> wrote: > > I've read PEP 661 and I have a question - can anybody answer it? > The PEP makes clear that any call to sentinel() will return a fresh > sentinel object - even if it is called twice with the same string parameter. > It states that sentinel objects have two public attributes: __name__ and > __module__. > It also states that pickling and unpickling a sentinel will return the > same object: > MISSING = sentinel('MISSING') > assert pickle.loads(pickle.dumps(MISSING)) is MISSING > > So if I write (in the same module, in the global scope): > > somename = 'MISSING' > MISSING1 = sentinel(somename) > MISSING2 = sentinel(somename) > assert MISSING2 is not MISSING1 > LAZARUS1 = pickle.loads(pickle.dumps(MISSING1)) > LAZARUS2 = pickle.loads(pickle.dumps(MISSING2)) > > how does Python know that > LAZARUS1 is MISSING1 > LAZARUS2 is MISSING2 is not MISSING1
Try it and you'll see! You won't get that far; it'll raise an exception. ChrisA -- https://mail.python.org/mailman3//lists/python-list.python.org
