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