Что> после команды print в Python 2?


import cStringIO

output = cStringIO.StringIO()
output.write('First line.n')
print >>output, 'Second line.'

# Retrieve file contents -- this will be
# 'First line.nSecond line.n'
contents = output.getvalue()

Что делает >>output в операторе print в строке 5?

1 2

1 ответ:

Он перенаправляет вывод инструкции print на открытый файлоподобный объект. Смотрите:print документация по заявлению :

print также имеет расширенную форму, определяемую второй частью синтаксиса, описанного выше. Эту форму иногда называют "печатью шеврона"."В этой форме первое выражение после >> должно вычисляться в "файлоподобный" объект, в частности объект, который имеет метод write(), как описано выше. С этой расширенной формой последующие выражения печатаются в этот файловый объект. Если первое выражение вычисляется как None, то sys.stdout используется в качестве файла для вывода.

По существу, строка переводится в output.write('Second line.' + '\n') asprint` добавляет новую строку к ее выходу, если выражение не заканчивается запятой.

Синтаксис основан на синтаксисе bash append >> (который также повлиял на операторы ввода-вывода C++ << и >>); смотритеPEP 214 для полной мотивации, почему это было выбрано.

В Python 3, где print() - функция, вы бы написали:

print('Second line.', file=output)

Вместо этого.