
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). Best, -Nikolaus -- »Time flies like an arrow, fruit flies like a Banana.« PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C