[Python-Dev] Replacement for print in Python 3.0

Barry Warsaw barry at python.org
Tue Sep 6 14:01:07 CEST 2005


On Tue, 2005-09-06 at 00:56, Guido van Rossum wrote:
> On 9/5/05, Barry Warsaw <barry at python.org> wrote:
> > Eliminating the newline argument from print() would reduce the number of
> > reserved keyword arguments in my strawman by half.  Maybe we could even
> > rename 'to' to '__to__' (!) to eliminate the other namespace wart.  Is
> > this really too horrible:
> > 
> > print('$user forgot to frobnicate the $file!\n',
> >       user=username, file=file.name, __to__=sys.stderr)
> 
> Yes, it is too horrible. As I said in another post, __xyzzy__ screams
> "special internal use, don't mess with this".

Fair enough -- it looked pretty icky to me too.

> I don't think the namespace wart is really a problem though; it's
> simple enough *not* to use 'to' as a variable name in the format.

True.

> Didn't you mean printf()? (Though I think if the format string doesn't
> roughly follow C's format string conventions the function shouldn't be
> called printf().)

Yep, I meant printf().

> What do you think of the trick (that I wasn't aware of before) used in
> Java and .net of putting an optional position specifier in the format,
> and using positional arguments? It would be a little less verbose and
> with sensible defaults wouldn't quite punish everybody as much for the
> needs of i18n. Formats with more than 3 or 4 variables should be rare
> in any case (these are not the days of Fortran formatted output).

It's definitely an interesting idea, and would solve the namespace thing
too.  The above /might/ look like (warning: pre-coffee thought follows):

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.

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.

-Barry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 307 bytes
Desc: This is a digitally signed message part
Url : http://mail.python.org/pipermail/python-dev/attachments/20050906/f385b080/attachment.pgp


More information about the Python-Dev mailing list