
On Sun, Jan 16, 2022 at 11:41:52PM +1100, Chris Angelico wrote:
On Sun, Jan 16, 2022 at 11:18 PM Steven D'Aprano <steve@pearwood.info> wrote:
Not to mention:
r(1, 2, 3) # look up r, call it with parameters r[1, 2, 3] # look up r, subscript it r"1, 2, 3" # a string literal
Strings behave differently in many many ways. Are there any non-string types that differ?
There are plenty of non-string types which differ :-) Differ in what way? I don't understand your question. You were concerned that adding a prefix to a delimiter in the form of f{...} would be a bug magnet, but we have had prefixes on delimiters for 30 years in the form of r"..." etc, and it hasn't been a problem. I mean, sure, the occasional beginner might get confused and write len{mystring} and if by some fluke they call f() rather than len() they will get a silent failure instead of a SyntaxError, but is this really a serious problem that is common enough to get labelled "a bug magnet"? I've been coding in Python for two decades and I still occassionally mess up round and square brackets, especially late at night, and I won't tell you how often I write my dict displays with equal signs {key=value}, or misspell str.center. And I still cringe about the time a few years back where my brain forgot that Python spells it "None" rather than "nil" like in Pascal, and I spent about an hour writing a ton of "if obj is nil"... tests. Typos and brain farts happen.
Reading this makes my eyes bleed:
>>> <1, 2, 3> < <1, 2, 3, 4> True
Fair point, but I can't imagine people comparing two literals like that.
They don't have to be literals inside the brackets. Especially in the REPL, `{*a} < {*b}` is a quick way of testing that every element of a is an element of b. [...]
Triple quoted strings say hello :-)
See above, strings are different, and people treat them differently.
Do they? How are they different? You have a start delimiter and an end delimiter. The only difference I see is that with strings the delimiter is the same, instead of a distinct open and close delimiter. But that difference is surely not a reason to reject the use of a prefix. "We can't use a prefix because the closing delimiter is different from the opening delimiter" does not follow. -- Steve