Jerzy Jalocha N wrote:
I've stumbled upon the following in Python 3:

Python 3.0.1+ (r301:69556, Apr 15 2009, 15:59:22)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import sys
sys.stdout.write("")
0
sys.stdout.write("something")
something9
write() is appending the length of the string to it's output. That's
not how it worked in 2.6.

What's the reason for this? Is this intended? I couldn't find a bug
report for this.

(You probably should be using 3.1, but that's not your particular problem here.)

The write() function changed in 3.0, but not in the way you're describing. It now (usually) has a return value, the count of the number of characters written. See the 3.1 docs:

file.write(/str/)

   Write a string to the file. Due to buffering, the string may not
   actually show up in the file until the flush() or close() method is
   called.

   The meaning of the return value is not defined for every file-like
   object. Some (mostly low-level) file-like objects may return the
   number of bytes actually written, others return None.

But because you're running from the interpreter, you're seeing the return value(9), which is suppressed if it's None, which it was in 2.x. This has nothing to do with how the language behaves in normal use.

DaveA

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to