Подтвердить что ты не робот

Использование функции print() (версия функции) в Python2.x

Я понимаю разницу между выражением и выражением, и я понимаю, что Python3 превратил print() в функцию.

Однако я запустил оператор print(), окруженный скобками на разных интерпретаторах Python2.x, и он работал безупречно, мне даже не пришлось импортировать какой-либо модуль.

Мой вопрос: оценивается ли следующий код print("Hello SO!") как оператор или выражение в Python2.x?

4b9b3361

Ответ 1

Рассмотрим следующие выражения:

a = ("Hello SO!")
a = "Hello SO!"

Они эквивалентны. Точно так же с утверждением:

statement_keyword("foo")
statement_keyword "foo"

также эквивалентны.

Обратите внимание, что если вы измените свою функцию печати на:

print("Hello","SO!")

Вы заметите разницу между python 2 и python 3. С python 2, (...,...) интерпретируется как кортеж, поскольку print - это инструкция, тогда как в python 3 это вызов функции с несколькими аргументами.

Поэтому, чтобы ответить на вопрос, print оценивается как оператор в python 2.x, если вы не from __future__ import print_function (введенный в python 2.6)

Ответ 2

print("Hello SO!") оценивается как оператор print ("Hello SO!"), где аргументом оператора print является выражение ("Hello SO!").

Это может иметь значение, если вы печатаете несколько значений; например, print("Hello", "world") будет печатать двухэлементный набор ('Hello', 'world') вместо двух строк "Hello" и "world".

Для совместимости с Python 3 используйте from __future__ import print_function:

>>> print("Hello", "world")
('Hello', 'world')
>>> from __future__ import print_function
>>> print("Hello", "world")
Hello world

Ответ 3

Он по-прежнему оценивается как оператор, вы просто печатаете ("Hello SO!"), который просто оценивает "Hello SO!", поскольку он не является кортежем (как упоминалось delnan).