Python 3.6¶
Python 3.6 beta 1 se publicó el 12 de septiembre de 2016, y aquí puede encontrar un resumen de las nuevas características:
Nuevas características de sintaxis |
Estado |
|
Formato literal de cadenas |
Completo |
|
Guiones bajos en literales numéricos |
Completo |
|
Generadores asíncronos |
||
Sintaxis para anotaciones de variables (provisional) |
Completo |
|
Comprensiones asíncronas |
||
Nuevas características integradas |
||
Preservación del orden de kwargs en una función |
||
Personalización más sencilla de la creación de clases |
Parcial [1] |
|
Preservación del orden de definición de los atributos de clase |
||
Cambios en la biblioteca estándar |
||
Desambiguación de la hora local |
||
Adición de un módulo de secretos a la biblioteca estándar |
||
Adición de un protocolo de rutas del sistema de archivos |
||
Internos de CPython |
||
Adición de una versión privada a dict |
No se hará |
|
Adición de una API de evaluación de fotogramas a CPython |
||
Cambios en Linux/Windows |
||
Hacer que |
||
Cambiar la codificación de la consola de Windows a UTF-8 |
||
Cambiar la codificación del sistema de archivos de Windows a UTF-8 |
||
Otros cambios del lenguaje:
Una sentencia global o nonlocal ahora debe aparecer textualmente antes del primer uso del nombre afectado en el mismo ámbito. Anteriormente esto era un SyntaxWarning. |
|
Ahora es posible asignar None a un método especial para indicar que la operación correspondiente no está disponible. Por ejemplo, si una clase asigna None a __iter__() , la clase no es iterable. |
|
Las secuencias largas de líneas de traza repetidas ahora se abrevian como [Previous line repeated {count} more times] |
|
La importación ahora lanza la nueva excepción ModuleNotFoundError cuando no puede encontrar un módulo. El código que actualmente comprueba ImportError (en try-except) seguirá funcionando. |
|
Los métodos de clase que dependen de super() sin argumentos ahora funcionarán correctamente cuando se llamen desde métodos de metaclase durante la creación de la clase. |
Cambios en los módulos integrados:
Los iteradores agotados de array.array ahora permanecerán agotados aunque se extienda el array iterado. |
|
La función b2a_base64() ahora acepta un argumento de palabra clave opcional newline para controlar si se añade el carácter de nueva línea al valor de retorno |
Completo |
Se ha añadido la nueva constante cmath.tau (τ) |
|
Nuevas constantes: cmath.inf y cmath.nan para coincidir con math.inf y math.nan , y también cmath.infj y cmath.nanj para coincidir con el formato usado por el repr de los números complejos |
|
Se ha añadido la nueva clase base abstracta Collection para representar clases contenedoras iterables con tamaño |
|
La nueva clase base abstracta Reversible representa clases iterables que también proporcionan el método __reversed__(). |
|
La nueva clase base abstracta AsyncGenerator representa generadores asíncronos. |
|
La función namedtuple() ahora acepta un argumento de palabra clave opcional module que, cuando se especifica, se usa para el atributo __module__ de la clase de tupla con nombre devuelta. |
|
Los argumentos verbose y rename de namedtuple() ahora son solo de palabra clave. |
|
Las instancias recursivas de collections.deque ahora se pueden serializar con pickle. |
|
Se añadieron al módulo las funciones de hash BLAKE2. blake2b() y blake2s() están siempre disponibles y admiten el conjunto completo de características de BLAKE2. |
|
Se añadieron las funciones de hash SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), y las funciones de hash SHAKE shake_128() y shake_256(). |
|
La función de derivación de claves basada en contraseña scrypt() ahora está disponible con OpenSSL 1.1.0 y versiones posteriores. |
|
json.load() y json.loads() ahora admiten entrada binaria. El JSON codificado debe representarse usando UTF-8, UTF-16 o UTF-32. |
|
Se ha añadido la nueva constante math.tau (τ) |
Completo |
Un nuevo método close() permite cerrar explícitamente un iterador de scandir(). El iterador de scandir() ahora admite el protocolo de gestor de contexto. |
|
En Linux, os.urandom() ahora se bloquea hasta que el grupo de entropía urandom del sistema se inicializa, para aumentar la seguridad. |
|
La llamada al sistema getrandom() de Linux (obtener bytes aleatorios) ahora se expone como la nueva función os.getrandom(). |
|
Se añadió soporte para tramos de modificadores en expresiones regulares. Ejemplos: “(?i:p)ython” coincide con “python” y “Python”, pero no con “PYTHON”; “(?i)g(?-i:v)r” coincide con “GvR” y “gvr”, pero no con “GVR”. |
|
Los grupos de un objeto Match se pueden acceder mediante __getitem__, que es equivalente a group(). Así, mo[“name”] ahora es equivalente a mo.group(“name”). |
|
Los objetos Match ahora admiten objetos similares a índices como índices de grupo. |
|
La función ioctl() ahora admite el código de control SIO_LOOPBACK_FAST_PATH. |
|
Ahora se admiten las constantes de getsockopt() SO_DOMAIN , SO_PROTOCOL, SO_PEERSEC y SO_PASSSEC. |
|
setsockopt() ahora admite la forma setsockopt(level, optname, None, optlen: int). |
|
El módulo socket ahora admite la familia de direcciones AF_ALG para interactuar con la API de criptografía del kernel de Linux. Se añadieron ALG_, SOL_ALG y sendmsg_afalg(). |
|
Se añadieron las nuevas constantes de Linux TCP_USER_TIMEOUT y TCP_CONGESTION. |
|
ssl admite OpenSSL 1.1.0. La versión mínima recomendada es 1.0.2. |
|
Se ha eliminado 3DES de los conjuntos de cifrado predeterminados y se han añadido los conjuntos de cifrado ChaCha20 Poly1305. |
|
SSLContext tiene una mejor configuración predeterminada para opciones y cifrados. |
|
Una sesión SSL se puede copiar de una conexión del lado del cliente a otra con la nueva clase SSLSession. La reanudación de sesión TLS puede acelerar el protocolo de enlace inicial, reducir la latencia y mejorar el rendimiento. |
|
El nuevo método get_ciphers() se puede usar para obtener una lista de los cifrados habilitados en orden de prioridad de cifrado. |
|
Todas las constantes y banderas se han convertido a IntEnum e IntFlags. |
|
Se añadieron protocolos TLS específicos para el lado del servidor y del cliente en SSLContext. |
|
Se añadió SSLContext.post_handshake_auth para habilitar y ssl.SSLSocket.verify_client_post_handshake() para iniciar la autenticación posterior al protocolo de enlace de TLS 1.3. |
|
ahora admite números de coma flotante de media precisión IEEE 754 mediante el especificador de formato “e”. |
|
La nueva función getfilesystemencodeerrors() devuelve el nombre del modo de error usado para convertir entre nombres de archivo Unicode y nombres de archivo de bytes. |
|
Las funciones compress() y decompress() ahora aceptan argumentos de palabra clave |
|
Notas