Michael Dudzik wrote:
Sure, but what about when you don't know the boolean value ahead of
C and f(x) or g(x)
On the other hand, (g(x), f(x))[C] works every time
To be fair, both g(x) and f(x) are evaluated while
f(x) if C else g(x) # python 2.5, only evaluates the appropriate
Still, I mostly spoke up because if one starts to use an idiom like:
python:C and 'somestring' or 'anotherstring'
you have to realize that
python:C and '' or 'anotherstring'
will fail. An idiom that breaks so easily doesn't seem so useful.
In 90% of cases you'll have a fixed value for the true case or the false
case, and you'll know that one cannot evaluate to false, in which case you
can choose to use:
C and foo or bar
not C and bar or foo
depending on whether foo or bar is potentially false.
In the remaining cases, you can use
(C and [foo] or [bar])
if it's important to have short-circuit semantics.
Florent Guillaume, Nuxeo (Paris, France) Director of R&D
+33 1 40 33 71 59 http://nuxeo.com [EMAIL PROTECTED]
Zope3-users mailing list