[Python-Dev] Replacement for print in Python 3.0 (original) (raw)
Barry Warsaw barry at python.org
Tue Sep 6 14:01:07 CEST 2005
- Previous message: [Python-Dev] pygettext() without newlines (Was: Re: Replacement for print in Python 3.0)
- Next message: [Python-Dev] Replacement for print in Python 3.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.-vars. −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
- Previous message: [Python-Dev] pygettext() without newlines (Was: Re: Replacement for print in Python 3.0)
- Next message: [Python-Dev] Replacement for print in Python 3.0
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]