[Python-Dev] New Wiki page - PrintAsFunction

Vincenzo Di Massa hawk78_it at yahoo.it
Mon Sep 5 00:38:23 CEST 2005


Hello,
This is my first post here.
I like python a lot: great job people!
Thank you!

Alle 10:28, sabato 03 settembre 2005, Ron Adam ha scritto:
> 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?

I like the object idea, really a lot!


>
> There are several advantages such as persistent separators and being
> able to have several different instances active at once.
>
> Cheers,
> Ron
>
>

I think savesep is unusefull.

import sys
class Print(object):
    newline =  '\n'
    sep = ' '
    def __init__(self, out=sys.stdout, println=""):
        self.out = out
        self._print=self.printNOln
        
    def __call__(self, *args, **kwds):
        self._print(*args, **kwds)

    def printNOln(self, *args, **kwds):
        try:
            sep = kwds['sep']
        except KeyError:
            sep = self.sep
        for arg in args[:1]:
            self.out.write(str(arg))
        for arg in args[1:]:
            self.out.write(sep)
            self.out.write(str(arg))
            
    def println(self, *args, **kwds):
        self.printNOln(*args, **kwds)
        self.out.write(self.newline)

> # default "builtin" instance
> write = Print()   # could be print in place of write in python 3k.
>
>
write._print=write.println
>
> # standard printing
 write(1, 2, 3)
>
> # print without spaces
 write(1, 2, 3, sep='')
>
> # print comma separated
 write(1, 2, 3, sep=', ')
>
> # or
> write.sep = ', '    # remain until changed
> write(1, 2, 3)
> write(4, 5, 6)
> write.sep = ' '
>
> # print without trailing newline
write._print=write.printNOln
> write(1, 2, 3)
>
> # print to a different stream
> printerr = Print(sys.stderr)
printerr._print=write.println 
printerr(1, 2, 3)
>
> # print a simple sequence
write._print=write.println
write(*range(10))
>
> # Print a generator expression
write(*(x*x for x in range(10)))
>
> # print to file
> f = open('printout.txt','w')
> fileprint = Print(f)
> fileprint("hello world\n")
> f.close()


Does this look good?

Ciao 
Vincenzo
>
>
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/hawk78_it%40yahoo.it

	

	
		
___________________________________ 
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB 
http://mail.yahoo.it


More information about the Python-Dev mailing list