On Sat, 25 Sept 2021 at 00:37, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote:
> On 25/09/21 10:15 am, Steve Keller wrote: > > BTW, I like how the min() and max() functions allow both ways of being > > called. > > That wouldn't work for set.union and set.intersection, because as > was pointed out, they're actually methods, so set.union(some_seq) > is a type error: > > >>> a = {1, 2} > >>> b = {3, 4} > >>> set.union([a, b]) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: descriptor 'union' for 'set' objects doesn't apply to a > 'list' object > > I suppose they could be fiddled somehow to make it possible, but > that would be turning them into special cases that break the rules. > It would be better to provide separate functions, as was done with > sum(). > A separate union function would be good. Even in a situation where all inputs are assured to be sets the set.union method fails the base case: >>> sets = [] >>> set.union(*sets) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: descriptor 'union' of 'set' object needs an argument In the case of intersection perhaps the base case should be undefined. -- Oscar -- https://mail.python.org/mailman/listinfo/python-list