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 necessary. c) is the most heavyweight solution, but can encapsulate options and is reusable: >>> Writer(sep="//").print("some","text") some//text or writer = Writer(sep="//", file=sys.stderr) writer.print("some","error-text") writer.print("another","error text") 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="//") >>> print("some","error-text") some//error_text >>> Writer.reset() >>> print("some","error-text") some error-text I think that reduces the weight of the object solution and enables all kind of configurations as user defined default. A lightweight print() is still possible: The print() function would be implemented like this: def print(*args): Writer.default_writer.print(*args) I appreciate very much functions that are just shortcuts for certain methods. 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). Kay _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com