Python 3.6

A versão beta 1 do Python 3.6 foi lançada a 12 de setembro de 2016 e um resumo das novas funcionalidades pode ser encontrado aqui:

Novas Funcionalidades de Sintaxe

Estado

PEP 498

Formatação de Strings Literais

Completo

PEP 515

Sublinhados em Literais Numéricos

Completo

PEP 525

Geradores Assíncronos

PEP 526

Sintaxe para Anotações de Variáveis (provisional)

Completo

PEP 530

Compreensões Assíncronas

Novas Funcionalidades Incorporadas

PEP 468

Preservação da ordem de kwargs numa função

PEP 487

Personalização mais simples da criação de classes

Parcial [1]

PEP 520

Preservação da Ordem de Definição de Atributos de Classe

Alterações na Biblioteca Standard

PEP 495

Desambiguação da Hora Local

PEP 506

Adição de um Módulo Secrets à Biblioteca Standard

PEP 519

Adição de um protocolo de caminho do sistema de ficheiros

Internos do CPython

PEP 509

Adicionar uma versão privada ao dict

Não será implementado

PEP 523

Adição de uma API de avaliação de fotogramas ao CPython

Alterações Linux/Windows

PEP 524

Tornar os.urandom() bloqueante no Linux (durante o arranque do sistema)

PEP 528

Alterar a codificação da consola Windows para UTF-8

PEP 529

Alterar a codificação do sistema de ficheiros Windows para UTF-8

Outras Alterações de Linguagem:

Uma instrução global ou nonlocal deve agora aparecer textualmente antes do primeiro uso do nome afetado no mesmo âmbito. Anteriormente, isto gerava um SyntaxWarning.

Agora é possível definir um método especial como None para indicar que a operação correspondente não está disponível. Por exemplo, se uma classe definir __iter__() como None, a classe não é iterável.

Longas sequências de linhas repetidas de traceback são agora abreviadas como [Previous line repeated {count} more times]

O import agora lança a nova exceção ModuleNotFoundError quando não consegue encontrar um módulo. O código que atualmente verifica ImportError (em try-except) continuará a funcionar.

Métodos de classe que dependem de super() sem argumentos funcionarão agora corretamente quando chamados a partir de métodos de metaclasse durante a criação da classe.

Alterações nos módulos incorporados:

array

Os iteradores esgotados de array.array manter-se-ão agora esgotados mesmo que o array iterado seja estendido.

binascii

A função b2a_base64() aceita agora um argumento de palavra-chave opcional newline para controlar se o caráter de nova linha é adicionado ao valor de retorno

Completo

cmath

A nova constante cmath.tau (τ) foi adicionada

Novas constantes: cmath.inf e cmath.nan para corresponder a math.inf e math.nan, e também cmath.infj e cmath.nanj para corresponder ao formato utilizado pelo repr de complexos

collections

A nova classe base abstrata Collection foi adicionada para representar classes de contentores iteráveis de tamanho definido

A nova classe base abstrata Reversible representa classes iteráveis que também fornecem o método __reversed__().

A nova classe base abstrata AsyncGenerator representa geradores assíncronos.

A função namedtuple() aceita agora um argumento de palavra-chave opcional module, que, quando especificado, é usado para o atributo __module__ da classe de tuplo nomeado retornada.

Os argumentos verbose e rename para namedtuple() são agora exclusivamente de palavra-chave.

Instâncias recursivas de collections.deque podem agora ser serializadas com pickle.

hashlib

As funções de hash BLAKE2 foram adicionadas ao módulo. blake2b() e blake2s() estão sempre disponíveis e suportam o conjunto completo de funcionalidades do BLAKE2.

As funções de hash SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), e as funções de hash SHAKE shake_128() e shake_256() foram adicionadas.

A função de derivação de chave baseada em palavra-passe scrypt() está agora disponível com OpenSSL 1.1.0 e versões posteriores.

json

json.load() e json.loads() suportam agora entrada binária. O JSON codificado deve ser representado utilizando UTF-8, UTF-16 ou UTF-32.

math

A nova constante math.tau (τ) foi adicionada

Completo

os

Um novo método close() permite fechar explicitamente um iterador scandir(). O iterador scandir() suporta agora o protocolo de gestor de contexto.

No Linux, os.urandom() bloqueia agora até que o conjunto de entropia urandom do sistema seja inicializado para aumentar a segurança.

A chamada de sistema Linux getrandom() (obter bytes aleatórios) está agora exposta como a nova função os.getrandom().

re

Adicionado suporte a intervalos de modificadores em expressões regulares. Exemplos: “(?i:p)ython” corresponde a “python” e “Python”, mas não a “PYTHON”; “(?i)g(?-i:v)r” corresponde a “GvR” e “gvr”, mas não a “GVR”.

Os grupos de objetos Match podem ser acedidos por __getitem__, que é equivalente a group(). Assim, mo[“name”] é agora equivalente a mo.group(“name”).

Os objetos Match suportam agora objetos semelhantes a índices como índices de grupos.

socket

A função ioctl() suporta agora o código de controlo SIO_LOOPBACK_FAST_PATH.

As constantes getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC e SO_PASSSEC são agora suportadas.

setsockopt() suporta agora a forma setsockopt(level, optname, None, optlen: int).

O módulo socket suporta agora a família de endereços AF_ALG para comunicar com a API criptográfica do kernel Linux. ALG_, SOL_ALG e sendmsg_afalg() foram adicionados.

As novas constantes Linux TCP_USER_TIMEOUT e TCP_CONGESTION foram adicionadas.

ssl

ssl suporta OpenSSL 1.1.0. A versão mínima recomendada é 1.0.2.

3DES foi removido dos conjuntos de cifras predefinidos e foram adicionados conjuntos de cifras ChaCha20 Poly1305.

SSLContext tem uma configuração predefinida melhorada para opções e cifras.

As sessões SSL podem ser copiadas de uma ligação do lado do cliente para outra com a nova classe SSLSession. A retoma de sessões TLS pode acelerar o handshake inicial, reduzir a latência e melhorar o desempenho.

O novo método get_ciphers() pode ser usado para obter uma lista de cifras ativas por ordem de prioridade.

Todas as constantes e flags foram convertidas para IntEnum e IntFlags.

Foram adicionados protocolos TLS específicos para o lado servidor e cliente para SSLContext.

Adicionado SSLContext.post_handshake_auth para ativar e ssl.SSLSocket.verify_client_post_handshake() para iniciar a autenticação pós-handshake TLS 1.3.

struct

suporta agora floats de meia precisão IEEE 754 através do especificador de formato “e”.

sys

A nova função getfilesystemencodeerrors() retorna o nome do modo de erro usado para converter entre nomes de ficheiros Unicode e bytes.

zlib

As funções compress() e decompress() aceitam agora argumentos de palavra-chave

Notas