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 | |
Formatação de Strings Literais | Completo | |
Sublinhados em Literais Numéricos | Completo | |
Geradores Assíncronos | ||
Sintaxe para Anotações de Variáveis (provisional) | Completo | |
Compreensões Assíncronas | ||
Novas Funcionalidades Incorporadas | ||
Preservação da ordem de kwargs numa função | ||
Personalização mais simples da criação de classes | Parcial [1] | |
Preservação da Ordem de Definição de Atributos de Classe | ||
Alterações na Biblioteca Standard | ||
Desambiguação da Hora Local | ||
Adição de um Módulo Secrets à Biblioteca Standard | ||
Adição de um protocolo de caminho do sistema de ficheiros | ||
Internos do CPython | ||
Adicionar uma versão privada ao dict | Não será implementado | |
Adição de uma API de avaliação de fotogramas ao CPython | ||
Alterações Linux/Windows | ||
Tornar | ||
Alterar a codificação da consola Windows para UTF-8 | ||
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:
Os iteradores esgotados de array.array manter-se-ão agora esgotados mesmo que o array iterado seja estendido. | |
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 |
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 | |
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. | |
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.load() e json.loads() suportam agora entrada binária. O JSON codificado deve ser representado utilizando UTF-8, UTF-16 ou UTF-32. | |
A nova constante math.tau (τ) foi adicionada | Completo |
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(). | |
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. | |
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 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. | |
suporta agora floats de meia precisão IEEE 754 através do especificador de formato “e”. | |
A nova função getfilesystemencodeerrors() retorna o nome do modo de erro usado para converter entre nomes de ficheiros Unicode e bytes. | |
As funções compress() e decompress() aceitam agora argumentos de palavra-chave | |
Notas