| ▲ | vova_hn2 2 hours ago | |||||||||||||
I like f-strings but I don't like that there are at least five ways to format stings. 1. %-formatting [1] 2. str.format [2] 3. string.Template [3] 4. f-string [4] 5. t-string [5] What happened to "one-- and preferably only one --obvious way to do it"? [6] Also, the way string formatting interacts with logging is a total mess. People just pass f-strings to logging, which seems to be an intuitive way to do it. Except it limits your options if you want to collect structured logs and it doesn't allow you to use late evaluation based on log level. [1] https://docs.python.org/3/library/string.html#format-example... [2] https://docs.python.org/3/library/stdtypes.html#str.format [3] https://docs.python.org/3/library/string.html#string.Templat... [4] https://docs.python.org/3/reference/lexical_analysis.html#f-... [5] https://docs.python.org/3/reference/lexical_analysis.html#t-... | ||||||||||||||
| ▲ | gucci-on-fleek 2 hours ago | parent | next [-] | |||||||||||||
> What happened to "one-- and preferably only one --obvious way to do it"? There arguably still is—just use f-strings for everything, unless you need to support ancient Python, in which case use %-formatting. t-strings are a special case, but in theory most functions should only accept regular strings or templates, so there should only be one choice there too. > Also, the way string formatting interacts with logging is a total mess [...] it doesn't allow you to use late evaluation based on log level. This all seems to be a side-effect of the fact that string formatting produces static strings, so I don't think that there's much that can be done here (but maybe t-strings can be creatively used here somehow). | ||||||||||||||
| ||||||||||||||
| ▲ | an hour ago | parent | prev [-] | |||||||||||||
| [deleted] | ||||||||||||||