[Python-ideas] 'where' statement in Python? (original) (raw)
Carl M. Johnson cmjohnson.mailinglist at gmail.com
Thu Jul 22 06:07:19 CEST 2010
- Previous message: [Python-ideas] 'where' statement in Python?
- Next message: [Python-ideas] 'where' statement in Python?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
There have been questions about whether there are any cases of the given/where/let/whatever solving problems that would otherwise be cumbersome to solve. I think it could help get around certain for-loop gotchas:
funcs = [] for i in range(5): ... def f(): ... print("#", i) ... funcs.append(f) ... [func() for func in funcs]
4
4
4
4
4
[None, None, None, None, None]
D’oh! (This can be a real world problem if you have a list of methods you want to decorate inside a class.)
One current workaround:
funcs = [] for i in range(5): ... def _(): ... n = i ... def f(): ... print("#", n) ... funcs.append(f) ... _() ... [func() for func in funcs]
0
1
2
3
4
[None, None, None, None, None]
Not pretty, but it works.
In let format (I’m leaning toward the format “let [VAR = | return | yield] EXPRESSION where: BLOCK”):
funcs = [] for i in range(5): let funcs.append(f) where: n = i def f(): print("#", n)
[func() for func in funcs]
Still a little awkward, but not as bad, IMHO.
-- Carl Johnson
- Previous message: [Python-ideas] 'where' statement in Python?
- Next message: [Python-ideas] 'where' statement in Python?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]