[Tutor] Hello, and a newbie question
eryksun
eryksun at gmail.com
Wed Apr 17 01:39:03 CEST 2013
On Tue, Apr 16, 2013 at 6:17 PM, Dave Angel <davea at davea.name> wrote:
> Someone else may know if "identical" has some exceptions. But as for where
> to put it, you'd need it for any module (including your own script) which is
> going to use the newer print() function.
I think any differences will result from the I/O system redesign in
3.x. In 2.x sys.stdout is still the old "file" type, which is
basically a wrapper around CRT FILE streams, while in 3.x it's a
TextIOWrapper wrapping a BufferedWriter wrapping a FileIO object.
Off the top of my head I don't have a clear example where it matters.
I vaguely recall having an issue with the default buffer flushing not
being the same. I think I was simulating scrolling text by printing a
carriage return ('\r') to overwrite a line. IRRC, in the end I opted
to directly use sys.stdout.write() and sys.stdout.flush().
Since __future__ imports are compiler directive, you have to include
them at the top of every module. "print_function" works in 2.6+. If
you just want the function under a different name, you can grab it
from the __builtin__ module:
>>> import __builtin__
>>> printf = getattr(__builtin__, 'print')
>>> printf('spam')
spam
More information about the Tutor
mailing list