Разница между sys.stdout.write и печать при печати переменных

Я хотел бы узнать разницу между sys.stdout.write и методами print (или функциями? Должен ли я назвать их функцией или методом?)

Например, код ниже будет печатать 11

 a = str(1) sys.stdout.write (a) 

Но это напечатает 1

 a = str(1) print (a) 

Почему существует такая разница? Есть ли способ сделать sys.stdout.write () print 1, а не 11?

Благодаря!

4 Solutions collect form web for “Разница между sys.stdout.write и печать при печати переменных”

Возвращаемое значение для sys.stdout.write() возвращает значение no. записанных байтов. В этом случае 1 который также печатается в интерактивной интерпретационной строке для любых введенных выражений.

Пример:

 >>> import sys >>> sys.stdout.write("foo") foo3 

Если вы хотите скрыть это, вы можете сделать это:

 >>> nbytes = sys.stdout.write("foo\n") foo 

Похоже, sys.stdout.write возвращает значение, которое он пишет. Поэтому он не печатает 11 , он печатает 1 и возвращает 1 . Однако, если вы это сделаете в интерактивном интерпретаторе, интерпретатор печатает возвращаемое значение выражения, которое снова равно 1 .

Если вы не делаете этого в интерактивном интерпретаторе (т. Е. Вы помещаете свой код в файл и запускаете его), он не будет печатать второй 1 . В интерактивном интерпретаторе вы можете подавить его, назначив результат:

 x = sys.stdout.write(a) 

Я предполагаю, что ваше следующее исполнение должно выдать тот же результат как для записи, так и для печати.

Поскольку он не был напечатан в первый раз и сидит в stdout, он печатает все stdout в одно и то же время, то есть 1 форму предыдущего исполнения и 1 из текущего исполнения.

Просто попробуйте и дайте мне знать 🙂

Чтобы объяснить вам разницу, вы должны понимать функцию печати –

 print(*objects, sep=' ', end='\n', file=sys.stdout) 

Печать принимает входные objects и записывает их в аргумент file который по умолчанию является sys.stdout и возвращает Nothing. Он использует функцию write объекта file arguement и печатает end аргумента в качестве последнего символа. Это означает, что по умолчанию sys.stdout.write использует печать инструкции на экране. Sys.stdout.write возвращает количество байтов в качестве возвращаемого значения. Print – это оболочка поверх sys.stdout.write .

  • Мне нужно __closure__
  • Каков самый простой способ обнаружения нажатия клавиш в python 3 на Linux-машине?
  • Можно ли получить элемент из PriorityQueue без его удаления?
  • Фильтрация в tweepy
  • Python Scrabble вызов найти действительные слова
  • как устранить проблему «AttributeError: __exit__» в многопроцессорности в Python?
  • Как добавить динамические модули python в спецификации PyInstaller?
  • Странное поведение в python с dict лямбда-функциями
  • В Python argparse, возможно ли иметь парные --no-something / - что-то аргументы?
  • Установленный скрипт Python не может импортировать модули пакета
  • Как исключить * .pyc и __pycache__ из колес python?
  • Python - лучший язык программирования в мире.