[Python-Dev] New Wiki page - PrintAsFunction

Ron Adam rrr at ronadam.com
Sat Sep 3 10:28:33 CEST 2005


Nick Coghlan wrote:
> All,
>> I put up a Wiki page for the idea of replacing the print statement with an 
> easier to use builtin:
>> http://wiki.python.org/moin/PrintAsFunction
>> Cheers,
> Nick.

Looks like a good start, much better than just expressing opinions. :-)
How about making it a class?
There are several advantages such as persistent separators and being 
able to have several different instances active at once.
Cheers,
Ron
import sys
class Print(object):
 newline = '\n'
 sep = ' '
 def __init__(self, out=sys.stdout):
 self.out = out
 def __call__(self, *args, **kwds):
 savesep = self.sep
 try:
 self.sep = kwds['sep']
 except KeyError:
 pass
 for arg in args[:1]:
 self.out.write(str(arg))
 for arg in args[1:]:
 self.out.write(self.sep)
 self.out.write(str(arg))
 self.sep = savesep
 def ln(self, *args, **kwds):
 self(*args, **kwds)
 self.out.write(self.newline)
# default "builtin" instance
write = Print() # could be print in place of write in python 3k.
# standard printing
write.ln(1, 2, 3)
# print without spaces
write.ln(1, 2, 3, sep='')
# print comma separated
write.ln(1, 2, 3, sep=', ')
# or
write.sep = ', ' # remain until changed
write.ln(1, 2, 3)
write.ln(4, 5, 6)
write.sep = ' '
# print without trailing newline
write(1, 2, 3)
# print to a different stream
printerr = Print(sys.stderr)
printerr.ln(1, 2, 3)
# print a simple sequence
write.ln(*range(10))
# Print a generator expression
write.ln(*(x*x for x in range(10)))
# print to file
f = open('printout.txt','w')
fileprint = Print(f)
fileprint("hello world\n")
f.close()


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /