Mathematically you’re spot on. That’s a perfectly rigourous, well defined argument.

But I wonder if the current restriction forces the writing of clearer code, and clearer expression of intent?

How many Python users in 2024, intuitively expect the intersection of n sets to be included in the symmetric difference of the same n sets, only when n is odd?

How many users would use set.symmetric_difference(*others) in the first place? I don’t know that the somewhat unintuitive behavior of this operation is that strong a case against it.

People who are using symmetric_difference should know what they want (and the documentation should be clear about what will happen), and that’s the best we can hope for.

I was pretty sure this has been discussed before, and I can’t remember the outcome of that discussion. edit I was thinking of a different discussion, about adding symmetric_difference to dictionaries, which is a much more confusing operation.

For whatever reason I definitely didn’t think ^ was associative and commutative…given that it is, it seems reasonable to allow multiple arguments in the methods. But there might be a reason I’m missing.