On 14 October 2016 at 14:19, אלעזר <elaz...@gmail.com> wrote: > On Fri, Oct 14, 2016 at 4:14 PM Gustavo Carneiro <gjcarne...@gmail.com> > wrote: > >> Sorry if I missed the boat, but only just now saw this PEP. >> >> Glancing through the PEP, I don't see mentioned anywhere the SQL >> alternative of having a coalesce() function: https://www. >> postgresql.org/docs/9.6/static/functions-conditional. >> html#FUNCTIONS-COALESCE-NVL-IFNULL >> >> In Python, something like this: >> >> def coalesce(*args): >> for arg in args: >> if arg is not None: >> return arg >> return None >> >> Just drop it into builtins, and voila. No need for lengthy discussions >> about which operator to use because IMHO it needs no operator. >> >> Sure, it's not as sexy as a fancy new operator, nor as headline grabbing, >> but it is pretty useful. >> >> > This has the downside of not being short-circuit - arguments to the > function are evaluated eagerly. >
I see. short-circuiting is nice to have, sure. But even without it, it's still useful IMHO. If you are worried about not evaluating an argument, then you can just do a normal if statement instead, for the rare cases where this is important: result = arg1 if result is None: result = compute_something() At the very least I would suggest mentioning a simple coalesce() function in the alternatives section of the PEP. coalesce function: Pros: 1. Familiarity, similar to existing function in SQL; 2. No new operator required; Cons: 1. Doesn't short-circuit the expressions; 2. Slightly more verbose than an operator; Thanks. -- Gustavo J. A. M. Carneiro Gambit Research "The universe is always one step beyond logic." -- Frank Herbert
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/