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() _______________________________________________ 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