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 |
|
Formatação Literal de Strings |
Completo |
|
Underscores em Literais Numéricos |
Completo |
|
Geradores Assíncronos |
||
Sintaxe para Anotações de Variáveis (provisório) |
Completo |
|
Compreensões Assíncronas |
||
Novos Recursos Embutidos |
||
Preservação da ordem de kwargs em uma função |
||
Personalização mais simples da criação de classes |
Parcial [1] |
|
Preservação da Ordem de Definição dos Atributos de Classe |
||
Mudanças na Biblioteca Padrão |
||
Desambiguação de Horário Local |
||
Adição de um Módulo de Secrets à Biblioteca Padrão |
||
Adição de um protocolo de caminho do sistema de arquivos |
||
Internos do CPython |
||
Adição de uma versão privada ao dict |
Não será feito |
|
Adição de uma API de avaliação de frames ao CPython |
||
Mudanças no Linux/Windows |
||
Tornar |
||
Mudança da codificação do console do Windows para UTF-8 |
||
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:
Iteradores esgotados de array.array agora permanecerão esgotados mesmo que o array iterado seja estendido. |
|
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 |
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 |
|
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. |
|
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.load() e json.loads() agora suportam entrada binária. O JSON codificado deve ser representado usando 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() 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(). |
|
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. |
|
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 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. |
|
agora suporta floats de meia precisão IEEE 754 por meio do especificador de formato ‘e’. |
|
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. |
|
As funções compress() e decompress() agora aceitam argumentos de palavra-chave |
|
Notas