[Python-ideas] PEP 505: None-aware operators
Steven D'Aprano
steve at pearwood.info
Mon Jul 23 10:03:25 EDT 2018
On Mon, Jul 23, 2018 at 10:48:23AM +0100, Steve Dower wrote:
> On 23Jul2018 0151, Steven D'Aprano wrote:
> >What if there was a language
> >supported, non-hackish way to officially delay evaluation of
> >expressions until explicitly requested?
>
> The current spelling for this is "lambda: delayed-expression" and the
> way to request the value is "()". :)
>
> (I'm not even being that facetious here. People ask for delayed
> expressions all the time, and it's only 7 characters, provided the
> callee knows they're getting it, and the semantics are already well
> defined and likely match what you want.)
I know you not being facetious, and delaying computation through a
function call is not an awful solution. But its not a great solution
either. Contrast the elegance of syntax with delayed evaluation:
1/x if x != 0 else func(y)
versus the lambda solution:
if_else(lambda: 1/x, x != 0, lambda: func(y))()
For clarity, or perhaps the opposite *wink* I've kept the same order of
arguments. It's not just the extra seven characters (plus spaces) per
delayed expression, or the extra parentheses at the end to force
evaluation, but the ease at which we can forget and write this:
if_else(1/x, x != 0, func(y))
Anyway, it was just an idle thought, not in a state to compete with this
PEP. And even if it were, I'd still prefer to see at least ?? as a
dedicated operator rather than a function.
--
Steve
More information about the Python-ideas
mailing list