On 21 Mai, 19:56, sturlamolden <[EMAIL PROTECTED]> wrote:
> On May 21, 11:38 am, [EMAIL PROTECTED] wrote:
>
> > if (match = my_re1.match(line):
> >   # use match
> > elsif (match = my_re2.match(line)):
> >   # use match
> > elsif (match = my_re3.match(line))
> >   # use match
>
> > ...buy this is illegal in python.
>
> Assignment expressions is disallowed in Python to protect against a
> very common bug in C/C++ programs, the (accidental) confusion of
>
>    if (match = my_re1.match(line))
>
> with
>
>    if (match == my_re1.match(line))
>
> or vice versa.

This is just a syntactical issue. But what is the *value* of an
assigment? In Python it is always None: assigments are statements, not
expressions.

However Guido and team have found a *pragmatic* solution for this at
another place:

with open("myFile") as f:
    BLOCK

Compare this with a possible syntactical form of an if-statement:

if EXPR as NAME:
    BLOCK

This isn't ugly syntax-wise. It's just a bit harder to understand the
semantics of an if-statement. It might read like this:

"Evaluate EXPR and compute bool(EXPR). If this value is True assign
EXPR to NAME and execute BLOCK. Otherwise refuse both assigment and
BLOCK execution."

Maybe assignment can be performed unconditionally as in the C case.
I'm not sure about this.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to