Guido van Rossum skrev:
I actually don't buy that argument. I believe that the main reason people keep arguing for anonymous blocks (and this will never stop) is simply that there is a certain segment of the programmer population that is used to solving a large variety of problems with anonymous blocks and that they don't want to learn how to solve each of those cases using the existing tools in Python.
I think anonymous blocks have proven their usefulness in concurrency programming. Just take a look at OpenMP or Apple's GCD. But I'll make an argument against anonymous blocks anyway: We can create "anonymous" blocks by throw-away names like "def _()", but why clutter the scope with names that are never used? So assume we would allow write "def():" to designate an anonymous block. I think 99% would abuse it like this: name = def(): <suite> This could just as well be written: def name(): <suite> Thus, certainly "name = def():" should not be allowed. If that is not allowed then, an anynymous block cannot be called or referenced, as there are no name associated with it. So to be useful, it would always have to be associated with a decorator. That would be the only way to get access to it: @decorator def(): <suite> Now we can see that the use for this anonymous block "def()" simply goes away, as it too is redundant syntax. Then it all comes down to whether or not allow decorators on code blocks: @decorator <suite> Since blocks do not create new scopes, I think the answer should be "no". S.M.