
Luc Goossens wrote:
Hi all,
There's a striking asymmetry between the wonderful flexibility in passing values into functions (positional args, keyword args, default values, *args, **kwargs, ...) and the limited options for processing the return values (assignment).
You're not limited to returning tuples. You could return an object with named attributes, or a namedtuple, or even just a dict. There's precedence in the standard library, for example, os.stat. Except in the case of tuple unpacking, this does mean that assigning the result of the function call is a two stage procedure: t = func(x, y, z) a, b, c = t.spam, t.ham, t.cheese but it does give you flexibility in adding new return fields without having to update function calls that don't use the new fields. -- Steven