[Python-Dev] Replacement for print in Python 3.0

Reinhold Birkenfeld reinhold-birkenfeld-nospam at wolke7.net
Thu Sep 1 18:57:34 CEST 2005


Guido van Rossum wrote:
> [Charles Cazabon]
>> >> Perhaps py3k could have a py2compat module.  Importing it could have the
>> >> effect of (for instance) putting compile, id, and intern into the global
>> >> namespace, making print an alias for writeln,
> 
> [Greg Ewing]
>> > There's no way importing a module could add something that
>> > works like the old print statement, unless some serious
>> > magic is going on...
> 
> [Reinhold Birkenfeld]
>> You'd have to enclose print arguments in parentheses. Of course, the "trailing
>> comma" form would be lost.
> 
> And good riddance! The print statement harks back to ABC and even
> (unvisual) Basic. Out with it!

Here I have to agree with Barry. print is very handy, and print>> is, too.

I'd rather see exec and assert becoming a function.

> A transitional strategy could be to start designing the new API and
> introduce it in Python 2.x. Here's my strawman:
> 
> (1) Add two new methods the the stream (file) API and extend write():
> stream.write(a1, a2, ...) -- equivalent to map(stream.write, map(str,
> [a1, a2, ...]))
> stream.writeln(a1, a2, ...) -- equivalent to stream.write(a1, a2, ..., "\n")
> stream.writef(fmt, a1, a2, ...) -- equivalent to stream.write(fmt %
> (a1, a2, ...))

Do we really need writef()? It seems to be not much better than its %-formatting
equivalent.

> (2) Add builtin functions write(), writeln(), writef() that call the
> corresponding method on sys.stdout. (Note: these should not just be
> the bound methods; assignment to sys.stdout should immediately affect
> those, just like for print. There's an important use case for this.)

If write* is introduced, this is absolutely necessary.

Reinhold

-- 
Mail address is perfectly valid!



More information about the Python-Dev mailing list