round - Usando print()(la versión de la función) en Python2.x
python print to file (3)
Entiendo la diferencia entre una declaración y una expresión, y entiendo que Python3 convirtió print () en una función.
Sin embargo, ejecuté una instrucción print () rodeada de paréntesis en varios intérpretes de Python2.x y funcionó sin problemas, ni siquiera tuve que importar ningún módulo.
Mi pregunta: ¿El siguiente código de print("Hello SO!") evaluó como una declaración o una expresión en Python2.x?
Considera las siguientes expresiones:
a = ("Hello SO!")
a = "Hello SO!"
Ellos son equivalentes. De la misma manera, con una declaración:
statement_keyword("foo")
statement_keyword "foo"
también son equivalentes.
Tenga en cuenta que si cambia su función de impresión a:
print("Hello","SO!")
Notarás una diferencia entre python 2 y python 3. Con python 2, el (...,...) se intercala como una tupla, ya que print es una declaración, mientras que en python 3, es una llamada a función con múltiples argumentos.
Por lo tanto, para responder a la pregunta en cuestión, print se evalúa como una declaración en python 2.x a menos que from __future__ import print_function (introducido en python 2.6)
Todavía se evalúa como una declaración, simplemente está imprimiendo ("Hello SO!") , Que simplemente evalúa como "Hello SO!" ya que no es una tupla (como lo menciona delnan).
print("Hello SO!") se evalúa como la declaración print ("Hello SO!") , donde el argumento para la declaración de print es la expresión ("Hello SO!") .
Esto puede marcar la diferencia si está imprimiendo más de un valor; por ejemplo, print("Hello", "world") imprimirá la tupla de 2 elementos (''Hello'', ''world'') lugar de las dos cadenas "Hello" y "world" .
Para compatibilidad con el uso from __future__ import print_function Python 3 from __future__ import print_function :
>>> print("Hello", "world")
(''Hello'', ''world'')
>>> from __future__ import print_function
>>> print("Hello", "world")
Hello world