Why are we trying to write one-liners in the first place? Conditional expressions are a rare spice that should be used sparingly. No matter the syntax, three of them nested together isn't readable code, it's a puzzle.
On 17 Jul 2023, at 23:09, Ned Batchelder <ned@nedbatchelder.com> wrote:_______________________________________________On 7/17/23 1:10 PM, Dom Grigonis wrote:
This whole thing started from dict’s `get` extension:def get_substitute(self, key, default=None, subs=()): return key in self ? (self[key] := val in subs ? subs[val] : val) : defaultI dare you to do a 1-liner with current if-else.
Why are we trying to write one-liners in the first place? Conditional expressions are a rare spice that should be used sparingly. No matter the syntax, three of them nested together isn't readable code, it's a puzzle.
--Ned.
On 17 Jul 2023, at 18:09, Rob Cliffe <rob.cliffe@btinternet.com> wrote:
On 15/07/2023 21:08, Dom Grigonis wrote:
Just to add. I haven’t thought about evaluation. Thus, to prevent evaluation of unnecessary code, introduction of C-style expression is needed anyways:Well, default is only evaluated if needed; bar is always evaluated.1. result = bar is None ? default : bar
The below would have to evaluate all arguments, thus not achieving benefits of PEP505.2. result = ifelse(bar is None, default, bar)
So I would vote for something similar to:result = bar is None ? default : bar
Where default and bar is only evaluated if needed. Although not to the extent as initially intended, it would offer satisfiable solutions to several proposals.
What is wrong with the Python equivalent
result = default if bar is None else bar
or if you prefer
result = bar if bar is not None else default
Perhaps you didn't know about this construction?
Best wishes
Rob Cliffe
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@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/Q4HZ5ME6V473L25AV33BA6C7JMXTI2PJ/ Code of Conduct: http://python.org/psf/codeofconduct/
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@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/IBDNP5LCVXRO5FXMCGD75J5OVO7BCGQW/
Code of Conduct: http://python.org/psf/codeofconduct/