A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2001-October/017946.html below:

[Python-Dev] conditional expressions?

[Python-Dev] conditional expressions?Guido van Rossum guido@python.org
Mon, 15 Oct 2001 16:18:48 -0400
> I misunderstood about the need for parens.  I had only been watching the
> thread in python-list with one eye.  I thought it was just some python-list
> riff-raff throwing around ideas.  Then I saw that Tim was part of the rabble
> ;-).  I still didn't notice the "I've implemented it but not yet checked it
> in" bit until someone else did and asked about it.  I then went looking for
> a PEP but didn't see one.  I hadn't seen any discussion on python-dev
> either.  (Maybe I missed it because python-list and python-dev mail wind up
> in the same mailbox.)

OK.  I guess you were thinking that the parentheses were required as
for 'if' in C?

>     Guido> If I saw a piece of code that read
> 
>     Guido>     x = if if if x == 1 then y else z then p else q then a else b
> 
>     Guido> I would get a strong urge to commit illegal violence against the
>     Guido> author.  If on the other hand I saw
> 
>     Guido>     x = if (if (if x == 1 then y else z) then p else q) then a else b
> 
>     Guido> I might be willing to sit down and figure out what it meant --
>     Guido> maybe with the help of a parentheses-balancing command in my
>     Guido> editor.
> 
> Python's block structured statement syntax keep you from composing just
> monstrosities at the statement level.  I'm not sure what makes them more
> appealing at the expression level.  How many levels of parens would be
> required before you had a "strong urge to commit illegal violence" against
> someone using a parenthesized conditional expression?

As soon as there is an if inside the condition of the first if.  Even
parentheses don't fix this, really.

> I guess that's what it boils down to for me.  You can easily write
> much more inscrutable code with the new conditional expression than
> you could before.

"You can write Fortran in any language" -- we've been through this
before.  Potential abuse is not enough to prevent it -- likely abuse
is.

> I think that will make Python somewhat less of a CP4E language.  I
> don't think it falls into the same category of the more esoteric
> features of the language (generators, metaclasses, __*__ methods,
> etc) that beginners can safely ignore.  Conditional expressions are
> pretty basic stuff, and this makes it easier to write fairly
> inscrutable conditional expressions.

It also makes it easier to write what you thinkk, IMO.

>     Guido> Sorry, I still don't get this at all.  A conditional
>     Guido> expression is still an expression.  Curly brances are a
>     Guido> statement-level concept.  What am I missing?  Where is
>     Guido> the similarity between the use of { } and ( ) in
>     Guido> C/Java/C++/Perl?
> 
> From the computer's viewpoint, they are syntactically and
> semantically, different, I agree.  From the point of view of a human
> trying to understand what's written I think they will serve much the
> same purpose, however.  White space is viewed is being essential
> enough to understanding that Python uses it for block structure.  In
> particular, I can't nest two compound statements on the same line.
> With this new addition to expressions, it appears you will be able
> to create arbitrarily complex expressions all on one line.

Previous versions of Python in no way impaired your ability to create
arbitrarily complex expressions all on one line.

--Guido van Rossum (home page: http://www.python.org/~guido/)



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4