[Python-ideas] Allow lambda decorators

spir denis.spir at free.fr
Mon Feb 9 19:05:54 CET 2009


Le Mon, 9 Feb 2009 09:09:18 -0800,
Guido van Rossum <guido at python.org> a écrit :

>   fs = []
>   for new i in range(10):
>     def f():
>       return i
>     fs.append(f)

The difference I see between such an iteration-specific loop variable and a "declarative" version is that in the latter case it is possible to choose which name(s), among the ones that depend on the loop var, will actually get one "cell" per iteration -- or not. Hem, maybe it's not clear...

For instance, using a declaration, it may be possible to write the following loop (I do not pretend 'local' to be a good lexical choice ;-):

funcs = []
for item in seq:
	local prod	# this name only is iteration specific
	prod = product(item)	# ==> one prod per item
	def f():
		return prod
	funcs.append(f)
	if test(item):
		final = whatever(item)	# non-local name
		break
print "func results:\n%s\nend result:%s" \
	%([f() for f in funcs],final)

I do not like global & non-local declaration (do not fit well the overall python style, imo). So I would not like such a proposal, neither. But I like the idea to select names rather than a loop-level on/off switch.

Denis
------
la vida e estranya



More information about the Python-ideas mailing list