Python 3.5

A continuación se muestra una lista de los PEP finalizados/aceptados para Python 3.5 agrupados según su impacto en MicroPython.

Extensiones de la sintaxis

Estado

PEP 448

Generalizaciones adicionales de desempaquetado

Parcial

PEP 465

Un nuevo operador de multiplicación de matrices

Completo

PEP 492

Corrutinas con la sintaxis async y await

Completo

Extensiones y cambios en el tiempo de ejecución

PEP 461

Formateo con % para cadenas binarias

Completo

PEP 475

Reintentar las llamadas al sistema que fallan con EINTR

Completo

PEP 479

Cambiar el manejo de StopIteration dentro de los generadores

Completo

Cambios en la biblioteca estándar

PEP 471

os.scandir()

PEP 485

math.isclose(), una función para comprobar la igualdad aproximada

Completo

Cambios diversos

PEP 441

Soporte mejorado para aplicaciones zip de Python

PEP 486

Hacer que el lanzador de Python reconozca los entornos virtuales

No relevante

PEP 484

Sugerencias de tipo (solo de carácter informativo)

Completo [1]

PEP 488

Eliminación de los archivos PYO

No relevante

PEP 489

Rediseño de la carga de módulos de extensión

Otros cambios del lenguaje:

Se añadieron los manejadores de errores namereplace. Los manejadores de errores backslashreplace ahora funcionan con la decodificación y la traducción.

Las cadenas de documentación de propiedades ahora son escribibles. Esto es especialmente útil para las cadenas de documentación de collections.namedtuple()

Ahora se admiten las importaciones circulares que involucran importaciones relativas.

Nuevos módulos:

Cambios en los módulos integrados:

collections

La clase OrderedDict ahora está implementada en C, lo que la hace de 4 a 100 veces más rápida.

Las vistas OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() ahora admiten la iteración con reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Las cadenas de documentación producidas por namedtuple() ahora se pueden actualizar.

La clase UserString ahora implementa los métodos __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() y maketrans() para coincidir con los métodos correspondientes de str.

heapq

La comparación de elementos en merge() ahora se puede personalizar pasando una función key en un nuevo argumento de palabra clave key opcional, y se puede usar un nuevo argumento de palabra clave reverse opcional para invertir la comparación de elementos

io

Un nuevo método BufferedIOBase.readinto1(), que usa como máximo una llamada a los métodos RawIOBase.read() o RawIOBase.readinto() del flujo sin procesar subyacente

json

El decodificador JSON ahora lanza JSONDecodeError en lugar de ValueError para proporcionar mejor información de contexto sobre el error.

math

Se han añadido dos nuevas constantes al módulo math: inf y nan.

Completo

Una nueva función isclose() proporciona una forma de comprobar la igualdad aproximada.

Se ha añadido una nueva función gcd(). La función fractions.gcd() ahora está obsoleta.

os

Se ha añadido la nueva función scandir() que devuelve un iterador de objetos DirEntry.

La función urandom() ahora usa la llamada al sistema getrandom() en Linux 3.17 o más reciente, y getentropy() en OpenBSD 5.6 y más reciente, eliminando la necesidad de usar /dev/urandom y evitando fallos debidos al posible agotamiento de descriptores de archivo.

Las nuevas funciones get_blocking() y set_blocking() permiten obtener y establecer el modo de bloqueo de un descriptor de archivo (O_NONBLOCK).

Hay una nueva función os.path.commonpath() que devuelve la subruta común más larga de cada nombre de ruta pasado

re

Las referencias y referencias condicionales a grupos de longitud fija ahora están permitidas en las aserciones de búsqueda hacia atrás

El número de grupos de captura en las expresiones regulares ya no está limitado a 100.

Las funciones sub() y subn() ahora reemplazan los grupos no coincidentes con cadenas vacías en lugar de lanzar una excepción.

Las excepciones re.error tienen nuevos atributos, msg, pattern, pos, lineno y colno, que proporcionan mejor información de contexto sobre el error

socket

Las funciones con tiempos de espera ahora usan un reloj monotónico, en lugar de un reloj del sistema.

Un nuevo método socket.sendfile() permite enviar un archivo a través de un socket utilizando la función de alto rendimiento os.sendfile() en UNIX, lo que hace que las cargas sean de 2 a 3 veces más rápidas que al usar socket.send() simple

El método socket.sendall() ya no restablece el tiempo de espera del socket cada vez que se reciben o envían bytes. El tiempo de espera del socket es ahora la duración total máxima para enviar todos los datos.

El argumento backlog del método socket.listen() ahora es opcional. De forma predeterminada se establece en SOMAXCONN o en 128, el menor de los dos.

Completo

ssl

Soporte de BIO en memoria

Soporte de negociación de protocolo de capa de aplicación

Hay un nuevo método SSLSocket.version() para consultar la versión real del protocolo en uso.

La clase SSLSocket ahora implementa un método SSLSocket.sendfile().

El método SSLSocket.send() ahora lanza la excepción ssl.SSLWantReadError o ssl.SSLWantWriteError en un socket no bloqueante si la operación se bloquearía. Anteriormente, devolvía 0.

La función cert_time_to_seconds() ahora interpreta la hora de entrada como UTC y no como hora local, según el RFC 5280. Además, el valor devuelto es siempre un int.

Los nuevos métodos SSLObject.shared_ciphers() y SSLSocket.shared_ciphers() devuelven la lista de cifrados enviados por el cliente durante el protocolo de enlace.

Los métodos SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() y SSLSocket.write() de la clase SSLSocket ya no restablecen el tiempo de espera del socket cada vez que se reciben o envían bytes.

La función match_hostname() ahora admite la coincidencia de direcciones IP.

sys

Una nueva función set_coroutine_wrapper() permite establecer un gancho global que se llamará cada vez que una función async def cree un objeto corrutina. Se puede usar la función correspondiente get_coroutine_wrapper() para obtener un envoltorio actualmente establecido.

Una nueva función is_finalizing() se puede usar para comprobar si el intérprete de Python se está cerrando.

time

La función monotonic() ahora siempre está disponible

Notas