Quais são as características do Python 3.0 vai mudar a sua cotidiana codificação? [fechadas]
-
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?
Solução
Há algumas coisas que eu estou muito interessado em:
- Texto e dados em vez de unicode e 8 bit
- estendida Iterable Desembalagem
- Função anotações
- literais binários
- New exceção captura sintaxe
- Uma série de Python 2.6 características, como por exemplo: o com declaração
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()
ouu""
. -
Não ter que procurar que os docs de
urllib
urllib2
ehttplib
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 umTypeError
esomething
, ouTypeError
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!