Python 3.9¶
O Python 3.9.0 (final) foi lançado a 5 de outubro de 2020. As funcionalidades para 3.9 estão definidas em PEP 596 e uma descrição detalhada das alterações pode ser encontrada em What’s New in Python 3.9
Funcionalidades |
Estado |
|
Acesso rápido ao estado do módulo a partir de métodos de tipos de extensão C |
Não relevante |
|
Operadores de união adicionados ao dict |
Completo [1] |
|
Dicas de tipo genéricas em coleções standard |
||
Anotações flexíveis de funções e variáveis |
||
CPython adota um ciclo de lançamento anual. Em vez de anual, o objetivo é um ciclo de lançamento de dois meses |
Não relevante |
|
Restrições gramaticais relaxadas nos decoradores |
||
A Base de Dados de Fusos Horários IANA está agora presente na biblioteca standard no módulo zoneinfo |
||
Métodos de string para remover prefixos e sufixos |
||
CPython utiliza agora um novo analisador baseado em PEG |
Não relevante |
Outras Alterações de Linguagem:
__import__() lança agora ImportError em vez de ValueError |
Completo |
Python obtém agora o caminho absoluto do nome do ficheiro de script especificado na linha de comandos (ex: python3 script.py): o atributo __file__ do módulo __main__ passou a ser um caminho absoluto, em vez de um caminho relativo |
|
Por predefinição, para melhor desempenho, o argumento errors só é verificado no primeiro erro de codificação/descodificação e o argumento encoding é por vezes ignorado para strings vazias |
|
«».replace(«», s, n) retorna agora s em vez de uma string vazia para todos os n diferentes de zero. É agora consistente com «».replace(«», s) |
|
Qualquer expressão válida pode agora ser usada como decorador. Anteriormente, a gramática era muito mais restritiva |
|
A execução paralela de aclose() / asend() / athrow() é agora proibida, e ag_running reflete agora o estado de execução real do gerador assíncrono |
|
Erros inesperados ao chamar o método __iter__ já não são mascarados por TypeError no operador in e nas funções contains(), indexOf() e countOf() do módulo operator |
|
As expressões lambda sem parênteses já não podem ser a parte de expressão numa cláusula if em compreensões e expressões geradoras |
Alterações nos módulos incorporados:
Devido a preocupações de segurança significativas, o parâmetro reuse_address de asyncio.loop.create_datagram_endpoint() já não é suportado |
|
Adicionada uma nova corrotina shutdown_default_executor() que agenda o encerramento do executor predefinido aguardando que o ThreadPoolExecutor termine de fechar. Além disso, asyncio.run() foi atualizado para usar a nova corrotina. |
|
Adicionado asyncio.PidfdChildWatcher, uma implementação de observador de processos filho específica do Linux que monitoriza descritores de ficheiro de processos |
|
adicionada uma nova corrotina asyncio.to_thread() |
|
Ao cancelar a tarefa devido a um timeout, asyncio.wait_for() aguardará agora até que o cancelamento esteja completo também no caso em que o timeout é <= 0, tal como faz com timeouts positivos |
|
asyncio lança agora TyperError ao chamar métodos incompatíveis com um socket ssl.SSLSocket |
|
A recolha de lixo não bloqueia em objetos ressuscitados |
|
Adicionada nova função gc.is_finalized() para verificar se um objeto foi finalizado pelo coletor de lixo |
|
Expandida a função math.gcd() para suportar múltiplos argumentos. Anteriormente, suportava apenas dois argumentos |
|
Adicionado math.lcm(): retorna o mínimo múltiplo comum dos argumentos especificados |
|
Adicionado math.nextafter(): retorna o próximo valor de vírgula flutuante após x em direção a y |
|
Adicionado math.ulp(): retorna o valor do bit menos significativo de um float |
|
Exposto o os.pidfd_open() e os.P_PIDFD específicos do Linux |
|
A função os.unsetenv() está agora também disponível no Windows |
Completo |
As funções os.putenv() e os.unsetenv() estão agora sempre disponíveis |
Completo |
Adicionada função os.waitstatus_to_exitcode(): converte um estado de espera num código de saída |
|
Adicionado novo método random.Random.randbytes: gerar bytes aleatórios |
|
Adicionado novo atributo sys.platlibdir: nome do diretório de biblioteca específico da plataforma |
|
Anteriormente, sys.stderr era armazenado em buffer de bloco quando não interativo. Agora stderr usa por predefinição sempre armazenamento em buffer de linha |
|
Notas