why can't do foo = print ?

Steve Menard steve.menard at polyester.com
Fri Aug 2 16:00:26 EDT 2002


"Steve Holden" <sholden at holdenweb.com> wrote in message
news:aby29.199267$724.121697 at atlpnn01.usenetserver.com...
> "Shagshag13" <shagshag13 at yahoo.fr> wrote in message
> news:aiat1c$12vq6c$1 at ID-146704.news.dfncis.de...
> > hello,
> >
> > i would like to have something like :
> >
> > if output_is_file:
> >     fh = file(filename, 'w')
> >     write = fh.write
> > else:
> >     write = print
> >
> > ...
> >
> > for i in something
> >     write(i)
> >
> > how could i do that ? is this possible ? (i can't do "write = print" and
> don't understant why)
> >
>
> For the same reason you can't do
>
>     define = def
>
> That is to say, the word "print" is a Python keyword, having a special
> meaning to the parser/compiler, and therefore unusable as an identifier.
>

you may realize that "print A" is just a shortcust for
    sys.__stdout__.write(A)
    sys.__stdout__.write("\n")

so your code could be rewriten like this :

 if output_is_file:
     fh = file(filename, 'w')
     write = fh.write
 else:
     write = sys.__stdout__.write

Hope this helps,
                Steve






More information about the Python-list mailing list