a = b = 1 just syntactic sugar?
Martin v. Löwis
martin at v.loewis.de
Mon Jun 9 07:05:26 EDT 2003
Ed Avis <ed at membled.com> writes:
> Sorry, what I meant was, the semantics is the same as a named def for
> the constructs that are added to the language. Lambda-functions which
> were legal before the change keep the same meaning. This could be
> implemented by adding an implicit 'return' if the body of the function
> is an expression_stmt.
So what is the rationale for wanting that change, again? Looking at
your proposal as I interpret it now, it seems you suggest allowing the
following in a lambda expression:
expr_stmt: same as today
assert_stmt: new feature
assignment_stmt: supported, but useless
You can only assign to local variables
so a lambda with a assignment_stmt inside
would have no effect
augmented_assignment_stmt: likewise
pass_stmt: supported, but useless
del_stmt: supported, but useless
you can only del local variables inside the lambda
print_stmt: would be a new feature
return_stmt: allowed, but useless
can be expressed with expr_stmt
yield_stmt: new feature
raise_stmt: new feature
break_stmt: allowed syntactically, but not semantically
contintue_stmt: likewise
import_stmt: allowed, but nearly useless
would have the side effect of importing the module,
but you could not get at the imported module
global_stmt: allowed, but useless
you can't use the global variable
exec_stmt: new feature
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?
Regards,
Martin
More information about the Python-list
mailing list