Python 3.6

O Python 3.6 beta 1 foi lançado em 12 de setembro de 2016, e um resumo dos novos recursos pode ser encontrado aqui:

Novos Recursos de Sintaxe

Status

PEP 498

Formatação Literal de Strings

Completo

PEP 515

Underscores em Literais Numéricos

Completo

PEP 525

Geradores Assíncronos

PEP 526

Sintaxe para Anotações de Variáveis (provisório)

Completo

PEP 530

Compreensões Assíncronas

Novos Recursos Embutidos

PEP 468

Preservação da ordem de kwargs em uma função

PEP 487

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

Parcial [1]

PEP 520

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

Mudanças na Biblioteca Padrão

PEP 495

Desambiguação de Horário Local

PEP 506

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

PEP 519

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

Internos do CPython

PEP 509

Adição de uma versão privada ao dict

Não será feito

PEP 523

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

Mudanças no Linux/Windows

PEP 524

Tornar os.urandom() bloqueante no Linux (durante a inicialização do sistema)

PEP 528

Mudança da codificação do console do Windows para UTF-8

PEP 529

Mudança da codificação do sistema de arquivos do Windows para UTF-8

Outras Mudanças na Linguagem:

Uma instrução global ou nonlocal agora deve aparecer textualmente antes do primeiro uso do nome afetado no mesmo escopo. Anteriormente isso era 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 define __iter__() como None, a classe não é iterável.

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

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

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

Mudanças nos módulos embutidos:

array

Iteradores esgotados de array.array agora permanecerão esgotados mesmo que o array iterado seja estendido.

binascii

A função b2a_base64() agora aceita um argumento de palavra-chave opcional newline para controlar se o caractere de nova linha é anexado 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 usado pelo repr de complexos

collections

A nova classe base abstrata Collection foi adicionada para representar classes de contêineres iteráveis com 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() agora aceita um argumento de palavra-chave opcional module que, quando especificado, é usado para o atributo __module__ da classe de tupla nomeada retornada.

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

Instâncias recursivas de collections.deque agora podem 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 recursos 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 senha scrypt() agora está disponível com o OpenSSL 1.1.0 e versões mais recentes.

json

json.load() e json.loads() agora suportam entrada binária. O JSON codificado deve ser representado usando 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() agora suporta o protocolo de gerenciador de contexto.

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

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

re

Adicionado suporte a spans 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’.

Grupos de objetos de correspondência podem ser acessados por __getitem__, que é equivalente a group(). Assim, mo[‘name’] agora é equivalente a mo.group(‘name’).

Objetos de correspondência agora suportam objetos semelhantes a índices como índices de grupo.

socket

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

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

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

O módulo socket agora suporta a família de endereços AF_ALG para interagir com a API de criptografia do Kernel Linux. ALG_, SOL_ALG e sendmsg_afalg() foram adicionados.

Novas constantes do Linux TCP_USER_TIMEOUT e TCP_CONGESTION foram adicionadas.

ssl

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

O 3DES foi removido dos conjuntos de cifras padrão e os conjuntos de cifras ChaCha20 Poly1305 foram adicionados.

SSLContext tem uma configuração padrão melhor para opções e cifras.

A sessão SSL pode ser copiada de uma conexão do lado do cliente para outra com a nova classe SSLSession. A retomada de sessão 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 das cifras habilitadas em ordem de prioridade.

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

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

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

struct

agora suporta floats de meia precisão IEEE 754 por meio do especificador de formato ‘e’.

sys

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

zlib

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

Notas