Aaron Brady wrote:
On Dec 20, 7:38 pm, Steven D'Aprano <st...@remove-this-
cybersource.com.au> wrote:
Instead of just whinging, how about making a suggestion to fix it? Go on,
sit down for an hour or ten and try to work out how a BINARY OPERATOR
like % (that means it can only take TWO arguments) can deal with an
arbitrary number of arguments, *without* having any special cases.
Go on. Take your time. I'll be waiting.
Hi, not to take sides, but, there is a possibility.
This behavior is currently legal:
"%i %%i" % 0 % 1
'0 1'
So, just extend it. (Unproduced.)
"%i %i" % 0 % 1
'0 1'
"%r %i" % (2, 3, 4) % 1
'(2, 3, 4) 1'
"%r %i" % (2, 3, 4)
'(2, 3, 4) %i'
Which is quite clever and way ahead of its (posessive) time.
A couple of problems:
1. How do you handle a literal '%'? If you just double up then you'll
need to fix the string after all your substitutions.
2. What if a substitution introduces a '%'?
I suppose a possible solution would be to introduce a special format
string, including a literal, eg:
f"%r %i" % (2, 3, 4) % 1
and then convert the result to a true string:
print(str(f"%r %i" % (2, 3, 4) % 1))
(although print() would call __str__ anyway).
The format string would track where the last substitution occurred.
Hmm... I think I'll just learn the new method. :-)
--
http://mail.python.org/mailman/listinfo/python-list