Quais são os problemas dos novos recursos do python 3 resolvidos? [fechadas]


18

Os novos recursos do Python 3 dizem:

estamos consertando aborrecimentos e verrugas bem conhecidos e removendo muitos restos antigos

Menciona o que é diferente (a correção), mas não o porquê (os problemas). Eu não encontrei quais eram os problemas. Quais foram os problemas que as correções resolveram?


1
Uma verruga, no entanto, eles não removeram, é a razão de ter que passar 'self' para um método de classe. Falha no trem.
Rig

Respostas:


11

Vou apenas citar aqueles que vêm à mente imediatamente.

  • Argumentos apenas de palavras-chave: Descritos na lógica do PEP.
  • nonlocal: Sem isso, os fechamentos não podem substituir as variáveis ​​fechadas. Ocasionalmente, essa necessidade surge com decoradores e outras funções de ordem superior. A única solução razoável (sem alternar a API externa), armazenando o estado mutável que você deseja em um objeto mutável, é excessivamente feia.
  • Compreensões de dicionário e conjunto: a criação de dicionários e conjuntos de maneira semelhante à compreensão de lista é menos bonita e um pouco mais lenta quando feita através de compreensões de gerador. Ele nos permite usar esses tipos onde forem apropriados, sem custo adicional. O mesmo vale para literais definidos, especialmente para intestes (a partir do Python 3.2, eles também são otimizados pelo otimizador de olho mágico).
  • Os literais octais existiam no Python 2, mas a 0777notação é uma armadilha para aqueles que não estão acostumados (em outros contextos, adicionar um zero zero inicial nem valor nem base).
  • Literais binários são úteis para manipulação de bits, mais ainda que literais hexadecimais.
  • Literais de bytes são um sintoma da distinção forçada entre cadeias unicode e cadeias de bytes, e literais de cadeia sendo unicode. Essas alterações obrigam você a pensar sobre a diferença entre texto e dados binários não interpretados e sobre codificações. Isso é importante porque, caso contrário, você precisa de testes extensivos (com entradas nos idiotas de língua inglesa, centrados na Europa / América raramente pensam) para encontrar erros relacionados à codificação.
  • except ex, var-> except ex as varcorrige o erro comum except ValueError, IndexError(deve pegar os dois, mas apenas pega o primeiro e sobrescreve o nome IndexErrorcom a exceção capturada).
  • Escopo da compreensão da lista: evite poluir os espaços para nome e permita pensar neles em termos de expressões geradoras.
  • Sintaxe e módulos removidos: aproxime-nos de "Deve haver um - e de preferência apenas um - caminho óbvio para fazê-lo". e evita que as pessoas com tutoriais ruins sigam a maneira antiga e falida de consertar as coisas.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.