[Python-Dev] Replacement for print in Python 3.0

Steve Holden steve at holdenweb.com
Tue Sep 6 22:32:59 CEST 2005

Guido van Rossum wrote:
> On 9/6/05, Barry Warsaw <barry at python.org> wrote:
>>printf('$1 forgot to frobnicate the $2!\n', username, file.name,
>>       to=sys.stderr)
>>While that's a little less self-descriptive for a translator to deal
>>with (who would only see the string, not the call site), it certainly
>>looks nicer for a non-i18n application, and could certainly work for an
>>i18n app too.  It's a neat idea worth exploring.
> Is it worth doing this and completely dropping the %-based formats in
> Py3k? (Just asking -- it might be if we can get people to get over the
> shock of $ becoming first class ;-).
>>Also, I think you posted in a separate article a syntactic proposal for
>>including detailed formating in $-vars.  ${varname:fmt} where 'varname'
>>could be an identifier a la PEP 292 or possibly a positional argument.
> +1
> I proposed ${varname%fmt} earlier but it prevents you to extend the
> varname syntax to arbitrary expressions, which I think is an extension
> that will get lots of requests.
I would anticipate security issues with allowing general expressions: 
you are effectively allowing access to eval(). If a naiive programmer 
were to use unverified input as a format string unpleasant things could 
happen ... your call, but it seems dangerous to me. Remember C's printf 
has been the source of some very dangerous errors.

Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC             http://www.holdenweb.com/

More information about the Python-Dev mailing list