On Sun, 16 Oct 2011 17:16:40 +1000 Nick Coghlan <ncoghlan@gmail.com> wrote:
# Embedded assignments in if statements if match is not None given match=re.search(pattern, text): # process match else: # handle case where regex is not None
# Embedded assignments in while loops while match is not None given match=re.search(pattern, text): # process match else: # handle case where regex is not None
Urk. What is the use case for these? Save one line of code but actually type *more* characters? "given" doesn't look like a very pretty notation to me, honestly. Apparently you're looking for a way to allow assignments in other statements but without admitting it (because we don't want to lose face?...). Also: sorted_data = sorted(data, key=sort_key) given: def sort_key(item): return item.attr1, item.attr2 isn't light-weight compared to anonymous functions that other languages have. The whole point of anonymous functions in e.g. Javascript is that embedding them in another statement or expression makes it a very natural way of writing code. The "given" syntax doesn't achieve this IMO; it forces you to write two additional keywords ("given" and "def") and also write twice a function name that's totally useless - since you can't reuse it anyway, as pointed out by Raymond. I'm -1 on that syntax. Regards Antoine.