Вы получаете вторую строчку, потому что print
prints the list of things you give it in sequence. Итак, вы печатаете error
, затем ничего, затем новую строку, затем sys.stderr
- у которой есть собственное строковое представление, которое равно <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
, а затем False
.
От РЕПЛ:
>>> import sys
>>> print("a", "b", "c")
a b c
>>> print(sys.stderr)
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
Учитывая, что, вы должны уточнить, что вы ожидали выход, предназначенный. Предположительно вы пытаетесь печатать stderr
, в этом случае вы должны использовать «именованные параметры»:
>>> print("a", "b", "c", sep=' +++ ', end='\n', file=sys.stderr, flush=False)
a +++ b +++ c
Обратите внимание, что поскольку подпись для print
включает в себя, как это первый параметр *objects
, он будет считать, все руки к нему что-то печатает. Вы должны назвать параметры sep
, end
, file
и flush
, если вы хотите их установить.