Python 3.7

Nuevas características:

Característica

Estado

PEP 538

Coerción de la antigua configuración regional C a una basada en UTF-8

PEP 539

Una nueva API de C para almacenamiento local de hilos en CPython

PEP 540

Modo UTF-8

PEP 552

pyc determinista

PEP 553

breakpoint() integrado

PEP 557

Clases de datos

PEP 560

Soporte central para el módulo typing y los tipos genéricos

PEP 562

__getattr__ y __dir__ de módulo

Parcial

PEP 563

Evaluación pospuesta de anotaciones

PEP 564

Funciones de tiempo con resolución de nanosegundos

Parcial [1]

PEP 565

Mostrar DeprecationWarning en __main__

PEP 567

Variables de contexto

Otros cambios del lenguaje:

async y await ahora son palabras clave reservadas

Completo

Los objetos dict deben preservar el orden de inserción

Ahora se pueden pasar más de 255 argumentos a una función; una función ahora puede tener más de 255 parámetros

bytes.fromhex() y bytearray.fromhex() ahora ignoran todos los espacios en blanco ASCII, no solo los espacios

str, bytes y bytearray obtuvieron soporte para el nuevo método isascii(), que se puede usar para comprobar si una cadena o bytes contienen solo caracteres ASCII

ImportError ahora muestra el nombre del módulo y la ruta __file__ del módulo cuando falla from ... import ...

Las importaciones circulares que implican importaciones absolutas con la vinculación de un submódulo a un nombre ahora son compatibles

object.__format__(x, '') ahora es equivalente a str(x) en lugar de format(str(self), '')

Para dar mejor soporte a la creación dinámica de trazas de pila, types.TracebackType ahora se puede instanciar desde código Python, y el atributo tb_next de las trazas ahora es modificable

Al usar el modificador -m, sys.path[0] ahora se expande de forma anticipada a la ruta completa del directorio de inicio, en lugar de dejarse como el directorio vacío (lo que permite importaciones desde el directorio de trabajo actual en el momento en que ocurre una importación)

La nueva opción -X importtime o la variable de entorno PYTHONPROFILEIMPORTTIME se pueden usar para mostrar la temporización de cada importación de módulo

Cambios en los módulos integrados:

asyncio

Demasiados para enumerar

gc

Las nuevas características incluyen gc.freeze(), gc.unfreeze(), gc-get_freeze_count

math

Se añadió math.remainder() para implementar el resto al estilo IEEE 754

re

Una serie de mejoras de limpieza, incluyendo mejor soporte para dividir en cadenas vacías y soporte de copia para expresiones compiladas y objetos Match

sys

Se añadió sys.breakpointhook(). Se añadió sys.get(/set)_coroutine_origin_tracking_depth()

time

Principalmente actualizaciones para dar soporte a la resolución de nanosegundos en PEP564, véase arriba

Notas