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