
Jan Kaliszewski dixit (2011-06-14, 00:30):
@in(mem=collections.Counter()) def do_and_remember(val, verbose=False): result = do_something(val) mem[val] += 1 if verbose: print('Done {} times for {!r}'.format(_mem[val], val))
@in (or @with, or @within, or @withlocal, or...) could be a language syntax construct
On second thought: no. I mean: no -- for a separate syntax construct with limited usage possibilities (see: cases mentioned by Steven); yes -- for language improvements that would make possible one of the solutions: 1. A real decorator: a) quasi-argument-locals-based (names could be used to read injected value and later could be rebound, like arguments); or b) another-level-closure-based (names could not be used to read injected values if rebound later: it's *either* a free variable *or* a local variable). or 2. `after-** hidden pseudo-arguments' (see previous posts...). Now I don't know which of them I'd prefer... And probably any of them would need some core-language modifications... (at least the '2' and '1a' variants) Regards. *j