Использование функции print() (версия функции) в Python2.x
Я понимаю разницу между выражением и выражением, и я понимаю, что Python3 превратил print() в функцию.
Однако я запустил оператор print(), окруженный скобками на разных интерпретаторах Python2.x, и он работал безупречно, мне даже не пришлось импортировать какой-либо модуль.
Мой вопрос: оценивается ли следующий код print("Hello SO!")
как оператор или выражение в Python2.x?
Ответы
Ответ 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).