2010-01-26 10 views

Respuesta

48

Debido a que la impresión no es una función, que es una declaración, y no se puede tener en las expresiones. Esto se vuelve más obvio si usa la sintaxis normal de Python 2:

my_list=[1,2,3] 
[print my_item for my_item in my_list] 

Eso no se ve del todo bien. :) Los paréntesis alrededor de mi elemento te engañan.

Esto ha cambiado en Python 3, por cierto, donde imprimir es una función, donde su código funciona bien.

+21

puede importar esta función desde el futuro: 'desde __future__ print_function' importación –

+0

@ THC4k - Estoy de acuerdo, esto hará Asegúrese de que el código se pueda compilar en * both * 2.6 y 3.0 –

+0

Correcto, ya que menciona específicamente 2.6, ese es un buen punto. –

6

Es un error de sintaxis porque print no es una función. Es una declaración. Dado que es obvio que no se preocupan por el valor de retorno de print (ya que no tiene ninguno), acaba de escribir el rizo:

for my_item in my_list: 
    print my_item 
5

lista por comprensión están diseñados para crear una lista. Por lo tanto, si imprimimos en su interior, daremos un error, no importa, que usemos print() o que imprimamos en 2.7 o 3.x. El código

[my_item for my_item in my_list] 

hace un nuevo objeto de la lista de tipos.

print [my_item for my_item in my_list] 

imprime esta nueva lista en su conjunto

refieren: here

+2

* "no importa que usemos print() o imprimamos en 2.7 o 3.x" * Esto solo es cierto para python 2.x, no python 3.x. '[print (char) for char en" abc "]' es válido (pero desaconsejado) en python 3.x – jDo

Cuestiones relacionadas