[Ed Kellett <e+python-id...@kellett.im>] > How about if you just can't have an expression in a local()?
See the quadratic equation example in the original post. When working with expressions, the entire point of the construct is to define (sub)local names for use in a result expression. > There are a few obvious alternative possibilities: > > 1. No special case at all: > > local(x=1, y=2, _=x+y) As above. > 2. Co-opt a keyword after local(): > > local(x=1, y=2) in x+y Requiring "in" requires annoying syntactic repetition in the common if local(match=re.match(regexp, line)) in match: kinds of cases. Making "in" optional instead was discussed near the end of the original post. I agree that your spelling just above is more obvious than `local(x=1, y=2, x+y)` which is why the original post discussed making an "in clause" optional. But, overwhelmingly, it appears that people are more interested in establishing sublocal scopes in `if` and `while` constructs than in standalone expressions, so I picked a spelling that's _most_ convenient for the latter's common "just name a result and test its truthiness" uses. > 3. Co-opt a keyword inside local(): > > local(x=1, y=2, return x+y) Why would that be better than local(x=1, y=2, x+y)? That no binding is intended for `x+y` is already obvious in the latter. > I hate the first and wish the _ pattern would die in all its forms, but > it's worth mentioning. I don't think there's much to choose between the > other two, but 2 uses syntax that might have been valid and meant > something else, so 3 is probably less confusing. Indeed, 3 is the only one I'd consider, but I don't see that it's a real improvement. It seems to require extra typing every time just to avoid learning "and it returns the value of the last expression" once. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/