To answer how this _could_ work, Undefined would be a new NoneType that is falsey (just like None) can't be reassigned (just like None) and does everything else just like None _except_ that when it is passed as a function argument, the argument name is bound to the default if it has one instead.
I am not sure I understand your example > notdefined = None > def foo(x=undefined): # here > notdefined = x > return wrapped_function(x) # there > foo() > print(notdefined) This would call wrapped_function with "undefined" so it would use the default if present, and print None because notdefined in foo is only in that scope? Did you mean to use a global notdefined in foo? In which case it would print undefined ? In your example there is no default to use... it would be this case: def foo(x=undefined): return bar(x) def bar(x=1): return x print(foo()) # 1 print(foo(2)) # 2 To be clear, I am _not_ +anything for this, I was just saying that I think this is what is really be asked for here. I am -0, I can see there being value, but that value is largely superficial and the possible can of worms is definitely a writhing one. The only problem it solves is allowing wrappers to fallback to their wrapped functions defaults, but at a fairly high cost. _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/UGWCLL7U6UH6ALMXGNFYGQA7AQH4BWAS/ Code of Conduct: http://python.org/psf/codeofconduct/