←back to thread

620 points tambourine_man | 6 comments | | HN request time: 0.715s | source | bottom
1. metrognome ◴[] No.43754478[source]
Zen of Python in 2025:

  There should be one-- and preferably only one --obvious way to do it.
Python String Formatting in 2025:

- t-strings

- f-strings

- %-operator

- +-operator

- str.format()

replies(4): >>43754501 #>>43754671 #>>43756716 #>>43756756 #
2. a_t48 ◴[] No.43754501[source]
The last three generally shouldn't be used (`+` is sometimes fine, but not really for formatting), but I doubt we would ever get a py4 that removes them, given the stomachaches that py3 caused. It does feel odd that a t-string is just an f-string without args applied.
replies(1): >>43756254 #
3. davepeck ◴[] No.43754671[source]
And $-strings (PEP 292) as well. :-)

I see each of these as distinct but overlapping; I'm (slowly) writing a guide to string formatting with all of these in mind, trying to emphasize when I'd choose one over the other. (fwiw I personally avoid % and + these days; $ is pretty uncommon in practice; f-, t-, and .format() all seem to have good unique uses.)

4. alfalfasprout ◴[] No.43756254[source]
It's my understanding that they're still recommended for logging since with f-strings you always pay the formatting cost (but with str.format it's deferred).
5. sanderjd ◴[] No.43756716[source]
t-strings aren't really like these others.

It's definitely true that those four string formatting techniques violate the "one obvious way" advice.

6. hughw ◴[] No.43756756[source]
I could scarcely believe this new t-string wasn't a joke. As an occasional, grudging Python programmer, I rue the accretion of string formatters over the years. My code bears the history of successive, imperfectly understood (by me)formatters.

"Situation: There are 14 competing standards...." https://xkcd.com/927/