On Tue, Jun 6, 2017 at 3:01 AM, Peter Pearson <pkpearson@nowhere.invalid> wrote: > On Fri, 2 Jun 2017 10:17:05 -0700 (PDT), sean.diza...@gmail.com wrote: > [snip] >>>>> print "foo %s" % 1-2 >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> TypeError: unsupported operand type(s) for -: 'str' and 'int' > > Others have already pointed out that you're assuming the > wrong precedence: > > Say > "foo %s" % (1-2) > not > ("foo %s" % 1) - 2 > . > > Personally I prefer a less compact but more explicit alternative: > > "foo {}".format(1-2)
The trouble with the zen of Python is that people now use the word "explicit" to mean "code that I like". What is more explicit here? It uses a method call instead of an operator, but either way, it's completely explicit that you want to populate the placeholders in a template string. ChrisA -- https://mail.python.org/mailman/listinfo/python-list