Most compact "X if X else Y" idiom
Aaron "Castironpi" Brady
castironpi at gmail.com
Sun Oct 12 07:25:56 CEST 2008
On Oct 12, 12:01 am, jbperez... at yahoo.com wrote:
> I find myself having to do the following:
> x = (some complex expression)
> y = x if x else "blah"
> and I was wondering if there is any built-in idiom that
> can remove the need to put (some complex expression)
> in the temporary variable x.
> e.g. something like the below:
> y= foobar ((some complex expression), "blah")
> I realized foobar() can be easily coded as:
> def foobar(a,b):
> if a: return a
> else: return b
> But I was wondering if there was a built-in function or syntax
> that already does this.
You could take your chances on 'or', as follows:
>>> (6+ (3<< 1) ) or 'blah'
>>> (6- (3<< 1) ) or 'blah'
You don't need to use the ternary statement:
y = (some complex expression)
if not y:
y = "blah"
If you find yourself using it a lot, why not add it to your site's
utilities modules? Take your time, and if you find numerous uses,
present them and make the case Python should have a built-in to do it,
something like 'ditto' marks:
(6- (3<< 1) ) if ditto else 'blah'
More information about the Python-list