Nick Coghlan ncoghlan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org writes:
A task I actually ran into at work this week: get a filtered list of subdirectories, exclude some based on a list of names to be ignored, sort the remainder by their modification times.
Some unrelated feedback to that PEP (very neat idea, IMO):
1. Shouldn't: ,---- | # Current Python (manual namespace cleanup) | def _createenviron(): | ... # 27 line function | | environ = _createenviron() | del _createenviron | | # Becomes: | environ = _createenviron() given: | def _createenviron(): | ... # 27 line function `---- really be ,---- | | # Becomes: | environ = _environ given: | ... # 27 line function that defines _environ `---- What's the point of defining a function in the given clause if you only execute it once? You may just as well run the function code directly in the given clause.
2. In ,---- | # Current Python (early binding via default argument hack) | seq =  | for i in range(10): | def f(_i=i): | return i | seq.append(f) | assert [f() for f in seq] == list(range(10)) `---- You probably meant "return _i"?
3. In my opinion the explicit early binding syntax is very ugly. Also, doesn't it restrict early binding to just one variable?
4. I think having given blocks default to early binding and other nested scopes not is very counterintuitive (but I don't have any idea of how to best resolve this).