On Sun, Jun 17, 2018 at 3:56 PM, Ben Finney <ben+pyt...@benfinney.id.au> wrote: > Chris Angelico <ros...@gmail.com> writes: > >> On Sun, Jun 17, 2018 at 3:30 PM, Ben Finney <ben+pyt...@benfinney.id.au> >> wrote: >> > (or, if you want to continue with the older less-flexible style, > > (I gave an unhelpful URL for that documentation. Try this instead > <URL:https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting>.) > >> For the record, there's nothing at all wrong with printf-style >> formatting; its flexibility and brevity make it extremely useful in >> many situations. > > That isn't the impression I get from the above documentation. It starts > with a clearly worded warning: > > Note > > The formatting operations described here exhibit a variety of quirks > that lead to a number of common errors (such as failing to display > tuples and dictionaries correctly). Using the newer formatted string > literals or the str.format() interface helps avoid these errors. > These alternatives also provide more powerful, flexible and > extensible approaches to formatting text. > > That states a clear opinion that ‘str.format’ is preferred.
And yet we have had a firm statement that percent-formatting is not going to be deprecated. Which is a clear statement that there's nothing wrong with it. The only problem I'm aware of with tuples and dicts is that a single parameter is misinterpreted, which is a minor nit caused by the operator syntax; the format mini-language itself is not affected by this. For instance, you can dodge the single-argument problem thus: >>> def sprintf(fmt, *args): ... return fmt % args ... >>> sprintf("%s", (1, 2, 3)) '(1, 2, 3)' Also: I would call that a "note", not a "warning". Please stop spreading the FUD that there's somehow something "wrong" with using what is a well-known convention for a format mini-language. ChrisA -- https://mail.python.org/mailman/listinfo/python-list