El módulo __future__ es un módulo incorporado en Python que se usa para heredar nuevas funciones que estarán disponibles en las nuevas versiones de Python.
Este módulo incluye todas las últimas funciones que no estaban presentes en la versión anterior de Python. Y podemos usar esto importando el módulo __future__. Sus lanzamientos están en Python versión 2.1. La idea básica del módulo __future__ es ayudar a migrar para usar las características de Python 3.X.
Nota: Las declaraciones futuras deben estar en la parte superior del archivo; de lo contrario, el intérprete de Python generará SyntaxError
Las siguientes características en este módulo:
Características | Opcional en | Obligatorio en |
---|---|---|
ámbitos_anidados | 2.1 | 2.2 |
generadores | 2.2 | 2.3 |
división | 2.2 | 3.0 |
importación_absoluta | 2.5 | 3.0 |
con_declaración | 2.5 | 2.6 |
imprimir_funcion | 2.6 | 3.0 |
literales_unicode | 2.6 | 3.0 |
generador_parada | 3.5 | 3.7 |
anotaciones | 3.7 | 3.11 |
Características básicas en el futuro módulo:
Hay siete características en el módulo futuro de Python.
Python
import __future__ print(__future__.all_feature_names)
Producción:
['nested_scopes', 'generators', 'division', 'absolute_import', 'with_statement', 'print_function', 'unicode_literals']
Módulo __futuro__ con función de impresión
Ejemplo 1:
La declaración de impresión de Python2 es diferente de la función de impresión de Python3. Usamos la declaración de impresión de Python en Python2 como:
print "Hello world"
Pero podemos usar la función de impresión de Python3 en la función de Python2 usando los módulos futuros.
Python
# Code in Python 2 from __future__ import print_function print("Hello world")
Producción:
Hello world
Ejemplo 2:
Aquí vamos a imprimir el mensaje en Python 2.X con los atributos finales que vienen en Python 3 y «finalizar» agrega una string en una nueva línea. Y generará un error porque la función no es compatible con 2.x.
Python
# In 2.7 python compiler print("Hello world", end=" ")
Producción:
File "main.py", line 1 print("Hello world", end=" ") ^ SyntaxError: invalid syntax
Entonces, con la función de impresión __future__ podemos importar estas características en nuestro código para usar la función de impresión más reciente.
Python
# In 2.7 python compiler from __future__ import print_function print("Hello world", end=";")
Producción:
Hello world;
Ejemplo 3:
sep también pertenece a Python 3.x pero aquí usaremos estos atributos usando este módulo. Verifiquemos estos atributos sin usar los módulos futuros.
Python3
# In 2.7 python compiler print('Welcome ', ' Geeksforgeeks', sep = ' To ')
Producción:
File "main.py", line 1 print('Welcome ', ' Geeksforgeeks', sep=' To ') ^ SyntaxError: invalid syntax
Entonces usemos la función de impresión __future__ para usar los atributos sep.
Python
# In 2.7 python compiler from __future__ import print_function print('Welcome ', ' Geeksforgeeks', sep=' To ')
Producción:
Welcome To Geeksforgeeks
Módulo __futuro__ con función de división
Aquí vamos a usar la función de división en Python2.x y Python3.x.
Veamos el ejemplo en Python2.x.
Python
# In 2.7 python compiler print 7 / 5 print -7 / 5
Producción:
1.4 -1.4
Y veamos esto con el módulo futuro, le dará el resultado exacto.
Python
# In below python 2.x code, division works # same as Python 3.x because we use __future__ from __future__ import division print 7 / 5 print -7 / 5
Producción:
1.4 -1.4
Módulo __future__ con función unicode_literals
En Python2.x no podemos usar Unicode, pero los módulos futuros nos permiten usar Unicode.
Ejemplo 1:
En Python2, las strings se consideran strings de bytes, pero en versiones posteriores, todas las strings se consideran strings Unicode.
Python
# code in Python2 print(type("Geeks"))
Producción:
<type 'str'>
Usemos el módulo futuro en Python2.
Python
# code in Python2 from __future__ import unicode_literals print(type("Geeks"))
Producción:
<type 'unicode'>
Ejemplo 2:
veamos el ejemplo sin el módulo futuro, generará un error porque estamos creando una string de bytes que contiene bytes codificados en UTF-8
Python
# encoding: utf-8 name = 'helló wörld from example' print name.encode('utf8')
Producción:
Traceback (most recent call last): File "main.py", line 3, in <module> print name.encode('utf8') UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)
Y se puede hacer en Python2X con futuros módulos.
Python
# encoding: utf-8 from __future__ import unicode_literals name = 'helló wörld from example' print name.encode('utf8')
Producción:
helló wörld from example
Publicación traducida automáticamente
Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA