> > 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. > Why are they a rare spice that should be used sparingly? Is it in line with python best practices? Anything to support this?
I think python list comprehensions is a direct antithesis to what you are saying. I thought they are considered to be a good and preferable practice, even nested cases. We even got a new operator “:=“ to help us with those beautiful one-liners (or not) to move towards aesthetics and brevity. Also, I disagree that the referred code isn’t readable. My point is exactly that such code is not readable and is a puzzle if current conditional expression is used. While having a more elegant if-else expression, this would not be a case. Combination of list comprehensions, “:=“ operator and good conditional 1-liners could be an excellent toolkit to do complex things in simple, readable and brief manner. Now I think all is there, except if-else expression does not satisfy in either of those dimensions, namely brevity & readability (maybe it is better readable than C's for someone with major in languages…?). So I am just trying to gauge if anyone else feels this way. As I already said, my code would look fairly differently if anything similar to what I am proposing existed. And I do not have a bias towards C or C++, 99% of what I do is python so if anything I am biased towards how python does things, not the other way round. Is there any place > On 17 Jul 2023, at 23:09, Ned Batchelder <n...@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) : >> default >> I 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.cli...@btinternet.com >>> <mailto:rob.cli...@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: >>>>> 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. >>>> >>> Well, default is only evaluated if needed; bar is always evaluated. >>> 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 >> <mailto:python-ideas@python.org> >> To unsubscribe send an email to python-ideas-le...@python.org >> <mailto:python-ideas-le...@python.org> >> https://mail.python.org/mailman3/lists/python-ideas.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/ >> >> <https://mail.python.org/archives/list/python-ideas@python.org/message/Q4HZ5ME6V473L25AV33BA6C7JMXTI2PJ/> >> Code of Conduct: http://python.org/psf/codeofconduct/ >> <http://python.org/psf/codeofconduct/> > _______________________________________________ > 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/IBDNP5LCVXRO5FXMCGD75J5OVO7BCGQW/ > Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ 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/DD3RDWQVU7C6RQLKWJ6GNLHBYTFMYKJR/ Code of Conduct: http://python.org/psf/codeofconduct/