Too much code - slicing
Antoon Pardon
Antoon.Pardon at rece.vub.ac.be
Tue Sep 21 10:17:48 EDT 2010
On Tue, Sep 21, 2010 at 12:07:07AM +0000, Steven D'Aprano wrote:
> On Mon, 20 Sep 2010 19:28:49 +0200, Antoon Pardon wrote:
>
> > Not necessarily. Some of us have the impression that Guido deliberatly
> > chose an ugly format for the ternary operator.
>
> If he did, then he must have changed his mind, because there is nothing
> ugly about the ternary operator we ended up with.
That is a question of taste and the poll and discussion earlier made it clear
that this was not the preferred way to have a ternary operator. This form
only ranked fourth (or maybe third), with the first three all wanting ar
structure with the elelement is this order: condition, true case, false case
> > Guido has alwasys been
> > against a ternary operator but the requests kept coming. So eventually
> > he introduced one. But the impression is that he chose an ugly format in
> > the hope of discouraging people to use it.
>
> That's sheer and unadulterated nonsense. The fact is that Guido changed
> his mind about ternary if after discovering that the work-around
>
> true-clause and condition or false-clause
>
> is buggy -- it gives the wrong answer if true-clause happens to be a
> false value like [], 0 or None. If I recall correctly, the bug bit Guido
> himself.
Nonsense. That the work around was buggy was known years before the
ternary operator was finally introduced. The introduction of list
comprehension made a ternary operator that more usefull but every
time it came up the supporters of Guido, told us we just had to
define a function if we wanted the items to depend on a condition.
And we knew about the problem, that is why we discussed bug-free
alternatives like:
condition and [true-expr] or [false-expr][0]
or
condition and (lambda: true-expr) or (lambda: false-expr)()
> The and-or hack, which was *very* common in Python code for many years
> and many versions, follows the same pattern as ternary if:
>
> true-clause if condition else false-clause
No it doesn't. the and-or-hack follows the same pattern as the if
statement.
condition, true clause, else clause
> It astounds me how the Python community changed it's collective mind from
> admiration of the elegance and simplicity of the expression when it was a
> buggy hack, to despising it when it became a bug-free language feature.
It seems that what changed is your memory and not the collective mind of
the python community.
We had an if statement and a (buggy) hack that followed the same pattern.
An earlier discussion and poll had revealed that people n general preferredr
to keep that pattern in a conditional expression. So why should you be
surprised when people express that they would have preferred a conditional
expression with a different pattern than we have now.
--
Antoon Pardon
More information about the Python-list
mailing list