Число не случайно; это количество написанных символов. Поскольку вы находитесь в интерактивном Python, возвращаемое значение оператора также печатается. sys.stdout.write
(или запись в файл в целом) возвращает количество записанных символов.
Поэтому, когда вы делаете что-то вроде sys.stdout.write('fooo')
, сначала печатается fooo
, затем печатается возвращаемое значение (4
).
sys.stdout.write
можно поиздеваться так:
def mywrite(s):
print(s, end='')
return len(s)
В интерактиве:
>>> def mywrite(s):
... print(s, end='')
... return len(s)
...
>>> mywrite('x')
x1
>>> mywrite('try')
try3
>>> mywrite('fooo')
fooo4