On Thu, Mar 02, 2017 at 10:03:29AM +0200, Serhiy Storchaka wrote: > I propose to add a new syntax for optional parameters. If the argument > corresponding to the optional parameter without default value is not > specified, the parameter takes no value. As well as the "*" prefix means > "arbitrary number of positional parameters", the prefix "?" can mean > "single optional parameter".
I like this! If the caller doesn't provide a value, the parameter remains unbound and any attempt to look it up will give a NameError or UnboundLocalError. The only question is, how often do we need a function with optional parameter that don't have a default? I've done it a few times, and used the sentinel trick, but I'm not sure this is common enough to need support from the compiler. It is a really clever solution though. > Alternative syntaxes: > > * "=" not followed by an expression: "def get(store, key, default=)". Too easy to happen by accident if you accidently forget to add the default, or delete it. > * The "del" keyword: "def get(store, key, del default)". This feature has nothing to do with del. -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/