Quais são as características do Python 3.0 vai mudar a sua cotidiana codificação? [fechadas]

StackOverflow https://stackoverflow.com/questions/340972

  •  19-08-2019
  •  | 
  •  

Pergunta

só saiu e tem gobs de puro novidades ! Estou curioso, o que SO Pythonistas mais animado? Que recursos estão indo para afetar a maneira de escrever código em uma base diária, ou tiver sido olhando para a frente?

Foi útil?

Solução

Há algumas coisas que eu estou muito interessado em:

Outras dicas

Espero que exceção encadeamento capturas diante. Perder rastreamentos de pilha de exceção devido à antipattern apresentados a seguir tinha sido a minha implicância por um longo tempo:

try:
   doSomething( someObject)
except:
   someCleanup()

   # Thanks for passing the error-causing object,
   # but the original stack trace is lost :-(

   raise MyError("Bad, bad object!", someObject)

Eu sei, eu sei, acrescentando algumas informações de contexto para a exceção original e preservando o rastreamento de pilha original possível, mas necessário um corte muito feio. Agora você pode (e deve !) Apenas:

raise MyError("Bad, bad object!", someObject) from original_exception

e facilmente obter ambos os itens acima. Assim, como uma parte da minha missão sagrada contra os rastreamentos de pilha perdidos:

Gente, não se esqueça do cláusula quando reraise exceções! Obrigado.

Muito francamente, nada disso. Enquanto eu provavelmente vou me encontrar com alguns dos novos sintaxe, eu uso principalmente Python para scripts rápido e simples e expressões regulares.

Eu acho que os novos recursos vão fazer um monte de pequenas coisas um pouco mais fácil para um monte de gente e algumas grandes coisas fácil para algumas pessoas. No entanto, eu sou cético de qualquer reivindicação que um monte de gente vai acabar encontrando enormes ganhos de produtividade.

Em suma, acho que estas mudanças irão tornar as coisas um pouco melhor no geral, mas não espere nenhum milagre.

Não é tanto um recurso, mas acho que a limpeza biblioteca será de grande ajuda, esp. para novos programadores python. Em mais de uma ocasião que eu queria fazer algo em python para encontrar somente duas bibliotecas incluídas que oferecem essa funcionalidade, com nenhuma razão óbvia por que eu deveria escolher um sobre o outro.

Aqui está um bom artigo que explica os novos recursos e / ou diferenças em relação ao python 2.x versos python 3.

http: //www.b-list. org / weblog / 2008 / dez / 05 / python-3000 /

Apesar do que eles fizeram para alcançar menor curso migração possível com linguagens interpretadas, acho que toda a liberação de python3 como dez anos de caminho doloroso da migração. Portanto, eu não encontrá-lo particularmente atraindo.

As melhorias que fizemos são tudo de bom e importante. Dois tipos diferentes de cordas têm sido uma verdadeira fonte de aborrecimentos em todos os lugares, portanto, é bom que eles se livrou do objeto unicode e bytes introduzidas objeto de lado agora str unicode.

O bignum vs. num -change era de conveniência e acho que isso também foi uma boa escolha. Em geral eles limparam o idioma a partir de componentes prejudiciais que acumularam durante os anos últimos dez.

Em segundo lugar pior coisa que fizeram foi a implementação 10% mais lento, como se a velocidade não seria o problema de python já.

Eu acredito que a liberação de empurrões python3 para baixo a reputação de python ao invés de melhora-lo. Agora eles estão de volta ao começo com sua língua quando se trata de suporte da biblioteca.

Não ter que fazer tanto ..

  • Não ter que se preocupar com unicode() ou u"".

  • Não ter que procurar que os docs de urllib urllib2 e httplib para descobrir onde que as funções que eu preciso para codificar um arquivo e enviá-lo através de uma solicitação POST

  • Não ter que se preocupar com except TypeError, something: wether vai pegar um TypeError e something, ou TypeError em `alguma coisa ..

E, inversamente, ter de olhar para os documentos de novo! Eu sei python bem o suficiente agora posso fazer mais coisas sem se referir a pydoc, mas cada vez que eu faço, eu descobrir algum outro módulo ou função útil.

A declaração de impressão. <sniff> Estou começando a perder já.

Na verdade, antes mesmo indo para Python 2.6, estamos print purga em favor de logging.debug. Este é apenas para sair do hábito de usar print casualmente para a depuração, suporte e desenvolvimento.

O que resta são alguns programas que realmente produzem coisas no stdout. Para aqueles, podemos introduzir uma função 2.6 / 3.0 compatível "print" em uma de nossas bibliotecas.

dicionário compreensões não são necessariamente a terra tremer, mas eles são muito agradável.

Enquanto {k: v for k, v in list} é maior do que dict(list) é mais flexível e auto-explanitory.

Uma das características mais subestimados do Python 3 é a introdução de classes abstratas Base. Isso é algo que não vai revolucionar Python programando imediatamente, mas representa uma mudança interessante de uma abordagem pato digitação solta na direção de interfaces melhor definidos.

Mais informação pode ser encontrada no PEP 3119 .

Quase todos eles como eu estou tomando o lançamento do Python 3 como motivação para aprender a língua.

Unicode (UTF-8) é realmente importante para as pessoas que vivem em países que não falam inglês.

Eu não gostava de especificar a codificação no início do arquivo, porque eu sempre esqueço. Normalmente meu texto é compatível com ASCII porque eu estou usando UTF-8, por isso está trabalhando sem a especificação de codificação. Mas se eu escrever o meu nome (com sotaque) ou um sinal de €, ele quebra ... acabei escrevendo caracteres Unicode com seu \ representação uxxxx mas é meio enigmática!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top