Steven D'Aprano wrote: [...] > (1) Add a new string method, which performs a case- > insensitive equality test. Here is a potential > implementation, written in pure Python: > > def equal(self, other): > if self is other: > return True > if not isinstance(other, str): > raise TypeError > if len(self) != len(other): > return False > casefold = str.casefold > for a, b in zip(self, other): > if casefold(a) != casefold(b): > return False > return True > > Alternatively: how about a === triple-equals operator to do > the same thing?
A good idea. But wouldn't that specific usage be inconsistent (even backwards) with the semantics of "===" as defined in most languages that use "==="? For me -- and this comment will be going beyond the scope of strings, and possibly, beyond the scope of this thread -- i feel that python is missing a pair of equality testing devices (sugared or not; but preferably sugared), that define a universal means by which all types can be tested with either "superficial equality" (aka: ==) or "deep equality" (aka: ===). However, such a design (whist quite intuitive) would break equality testing as it exists today in Python. For instance, it would mean that: (1) Superficial Equality >>> "abc" == "abc" True >>> "abc" == "ABC" True (2) Deep Equality >>> "abc" === "abc" True >>> "abc" === "ABC" False And i don't think even GvR's time machine will be much help here. :-( -- https://mail.python.org/mailman/listinfo/python-list