3 ms·
At first glance, parameter tuple unpacking seems like a silly hack that was wisely removed, explained here http://legacy.python.org/dev/peps/pep-3113/ http://le
by paulsutter 11y ago
At first glance, parameter tuple unpacking seems like a silly hack that was wisely removed, explained here http://legacy.python.org/dev/peps/pep-3113/ http://legacy.python.org/dev/peps/pep-3113/
What are the cases where you use it / rely on it?
- wfunction 11y ago> What are the cases where you use it / rely on it? Basically any time I need to unpack inside a lambda (e.g. functional programming) and have to use something like itertools.groupby(), I run into trouble with Python 3. For example: from itertools import groupby def groupby_unsorted(items, key): return map(lambda (g, l): (g, map(lambda (k, v): v, l)), groupby(sorted(map(lambda v: (key(v), v), items)), lambda (k, v): k)) print(groupby_unsorted([1, 2, 3, 4], lambda v: v % 2)) Never ran into problems with it either.
- aldanor 11y agoBut tuple unpacking inside lambdas is actually supported in Python 3, isn't it?
- wfunction 11y agoCould you give me an example of what you mean?
- azag0 11y agoPython has comprehensions for this style of programming: def groupby_unsorted(iterable, key): return [(k, [v for k, v in g]) for k, g in groupby(sorted((key(v), v) for v in iterable), lambda item: item[0])] print(groupby_unsorted([1, 2, 3, 4], lambda v: v % 2))
- wfunction 11y agoYes, list comprehensions can take care of some of these, but you're completely missing the entire point. The point was that writing something like lambda item: item[0] in your code is inferior to lambda (k, v): k in terms of readability and comprehensibility. It is both longer and it also doesn't document the fact that the item is semantically a key-value pair. The problem is not (and has never been) whether something is "necessary" or "possible". Tuple unpacking obviously completely unnecessary to begin with, it has nothing to do with whether this is done in a parameter or not. The problem is whether the code is expressed better via unpacking.