[Python-Dev] Replacement for print in Python 3.0
kay.schluehr at gmx.net
Mon Sep 5 22:09:00 CEST 2005
Guido van Rossum wrote:
> I see two different ways to support the two most-called-for additional
> requirements: (a) an option to avoid the trailing newline, (b) an
> option to avoid the space between items.
> One way would be to give the print() call additional keyword
> arguments. For example, sep="//" would print double slashes between
> the items, and sep="" would concatenate the items directly. And
> end="\r\n" could be used to change the newline delimiter to CRLF,
> while end="" would mean to suppress the newline altogther.
> But to me that API becomes rather klunky; I'd rather have a separate
> function (printbare() or write()?) that just writes its arguments as
> strings to sys.stdout (or to the file given with a keyword argument)
> without intervening spaces or trailing newline.
I guess there are three options:
a) keyword arguments
b) distributing similar functionality over several functions
c) using an object for configuration
In case a) I miss some visual clue. That's mostly because an arbitrary
string is passed to print(). For this reason I like the current print
statement in it's simplicity.
b) maybe the least extendable solution but can be mixed with a) if
c) is the most heavyweight solution, but can encapsulate options and is
writer = Writer(sep="//", file=sys.stderr)
A bare print() can be considered as a call to some default_writer.
Substituting the default_writer by some custom Writer object may replace
the default configuration, which should be easily resetable:
>>> Writer.default_writer = Writer(sep="//")
I think that reduces the weight of the object solution and enables all
kind of configurations as user defined default. A lightweight print() is
The print() function would be implemented like this:
I appreciate very much functions that are just shortcuts for certain
For consistency reasons the function write() may be a better name choice
then print(), but also a different name for Writer() would be an option
in case of c).
More information about the Python-Dev