Разница между 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 .

  • только целые числа, срезы (`:`), эллипсис (`...`), numpy.newaxis (`None`) и целые или логические массивы являются действительными индексами
  • Почему при вызове модуля с параметром -m задается sys.path для пустых строк?
  • Рекурсия: значение учетной записи с распределением
  • Поставщик данных Python unittest
  • Приоритет логических операторов NOT AND & OR в python
  • Как я могу разбить строку математических выражений в python?
  • Доступ к встроенным функциям __builtins__
  • Matplotlib 2 непоследовательный шрифт
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.