python3 print_function libreria from absolute_import __future__ python python-2.7 loops vim python-import

libreria - ¿Por qué el uso de__future__ import print_function interrumpe la impresión al estilo Python2?



libreria future python (1)

Soy nuevo en programación con python, y estoy tratando de imprimir con un separador y finalizar, pero todavía me da un error de sintaxis.

Estoy usando python 2.7.

Aquí está mi código:

import sys, os, time from __future__ import print_function for x in range(0,10): print x, sep='' '', end='''' time.sleep(1)

Y aquí está el error:

from __future__ import print_function import sys, os, time for x in range(0,10): print(x, sep='' '', end='''') # No need for sep here, but okay :) time.sleep(1)


En primer lugar, from __future__ import print_function debe ser la primera línea de código en su script (aparte de algunas excepciones mencionadas a continuación). En segundo lugar, como han dicho otras respuestas, debe usar print como una función ahora. Ese es el objetivo de from __future__ import print_function ; para llevar la función de print de Python 3 a Python 2.6+.

from __future__ import print_function import sys, os, time for x in range(0,10): print(x, sep='' '', end='''') # No need for sep here, but okay :) time.sleep(1)

__future__ declaraciones __future__ deben estar cerca de la parte superior del archivo porque cambian cosas fundamentales sobre el lenguaje, por lo que el compilador necesita saber sobre ellas desde el principio. De la documentación :

Una declaración futura se reconoce y trata especialmente en el momento de la compilación: los cambios en la semántica de las construcciones centrales a menudo se implementan mediante la generación de código diferente. Incluso puede darse el caso de que una nueva característica introduzca una nueva sintaxis incompatible (como una nueva palabra reservada), en cuyo caso el compilador puede necesitar analizar el módulo de manera diferente. Tales decisiones no pueden ser postergadas hasta el tiempo de ejecución.

La documentación también menciona que las únicas cosas que pueden preceder a una declaración __future__ son la cadena de documentación del módulo, comentarios, líneas en blanco y otras declaraciones futuras.