round print python printing python-2.x function-call

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