a = b = 1 just syntactic sugar?

Ed Avis ed at membled.com
Mon Jun 9 16:38:10 EDT 2003


martin at v.loewis.de (Martin v. =?iso-8859-15?q?L=F6wis?=) writes:

>Looking at your proposal as I interpret it now, it seems you suggest
>allowing the following in a lambda expression:

[list of simple_stmt cases, most of them useless]

>assignment_stmt: supported, but useless

Not so, consider assignment to list and dictionary elements.  (Though
a better way to accomplish this might be to add concise 'set' methods
rather than relying on the somewhat anomalous d[k] = v statement.)

>del_stmt:        supported, but useless

Likewise, not useless for lists and dictionaries.  And again maybe
making a 'del' method would be a better way of addressing the problem.

>To summarize, you can only use print, raise, yield, and exec in a
>meaningful way. Why would I want to have any of these in a lambda
>expression?

IIRC I originally gave three motivating examples:

    lambda x: print 'value', x
    lambda x: assert x > 0
    lambda x: y += x

After thinking about the intended semantics of lambda functions
containing statements, I realize that the third is useless because y
is local to the lambda function.  Although 'y[x] += 5' does have an
effect, and is plausible.

The other two I still think would be useful.

-- 
Ed Avis <ed at membled.com>




More information about the Python-list mailing list