Pydon'ts

Escreve código Python elegante

Uma série de artigos que te ensinam a fazer o melhor uso possível das funcionalidades do Python. Podes ler os Pydon'ts aqui, ou então podes comprar o e-book.

Este Pydon't mostra-te como usar as expressões condicionais de Python, a alternativa ao operador ternário em Python.

Este Pydon't ensina-te a usar list comprehensions em Python.

Este Pydon't ensina-te a usar os tipos de dados set e frozenset, que servem para trabalhar com conjuntos em Python.

Neste Pydon't vais aprender a utilizar o REPL da melhor forma possível.

Neste Pydon't vou explicar-te como é que te poderás, eventualmente, tornar um mestre do Python.

Neste Pydon't vou discutir as coisas que é preciso ter em conta sempre que usamos nomes em Python.

Neste Pydon't vou falar do estilo do código e de ferramentas que te podem ajudar a manteres o teu código com um estilo consistente

Neste Pydon't, eu explico porque é que é importante tentarmos fazer pequenas melhorias incrementais ao nosso código, e dou dicas para facilitar esse processo.

Será que a elegância é uma característica importante de um programa de computador..?

Neste Pydon't vamos aprofundar os nossos conhecimentos sobre o atributo dunder __name__.

O objetivo deste Pydon't é mostrar quais são as utilizações do underscore _ em Python, e mostrar como o usar para escrever código mais idiomático.

Neste Pydon't debruçamo-nos sobre a função reduce, que já fez parte dos built-ins da linguagem e que, com a versão 3, foi movido para a biblioteca functools.

Neste Pydon't exploramos a funcionalidade que os operadores and e or têm de avaliar só um lado da expressão. Esta funcionalidade tem algumas utilizações comuns muito expressivas.

Neste Pydon't concluímos a trilogia sobre fatias em Python e vamos ver como estas funcionam internamente: vamos falar sobre o tipo slice e vamos ainda falar sobre o método __getitem__ e os seus dois irmãos.

Neste artigo vamos apresentar os tópicos mais avançados relacionados com fatias em Python.

Neste artigo introduzimos “fatias” em Python e apresentamos algumas utilizações idiomáticas desta funcionalidade.

Um artigo curto com tudo o que precisas de saber sobre indexar sequências em Python.

Se precisas de aceder aos elementos de um iterador e aos seus índices, já pensaste em usar enumerate? Neste artigo vamos falar de outra ferramenta fantástica que Python tem para lidar com ciclos for.

Os ciclos for são importantíssimos na programação imperativa e Python tem algumas ferramentas muito boas para trabalhar com ciclos. Se queres atravessar várias estruturas paralelamente, já pensaste usar a função zip?

Correspondência estrutural é uma funcionalidade que vai ser introduzida com Python 3.10 e o artigo anterior mostrou como a usar; este artigo mostra quais são os casos em que o match não é a melhor alternativa.

Correspondência estrutural é uma funcionalidade que vai ser introduzida com Python 3.10, e este artigo mostra como a usar para escrever código elegante com a instrução match.

As comparações em Python podem ser encadeadas. Aprende as nuances desta funcionalidade de Python e, em particular, os casos a evitar tais como quando encadeias comparações que não estão alinhadas.

Usar atribuições estruturais tem o potencial de tornar o código bastante mais expressivo. Estas atribuições permitem melhorar a legibilidade do teu código e protegem-te contra alguns tipos de bugs. Aprender a usar esta ferramenta também é muito importante para conseguires aproveitar ao máximo a funcionalidade de execução condicional estrutural que vai ser lançada com o Python 3.10.

Recursão é uma técnica que é útil para qualquer programador, mas isso não significa que deves estar sempre a user recursão quando escreves código Python. Às vezes é melhor reescrever a recursão com ciclos, ou às vezes até repensar a tua solução por completo.

Todos os objetos em Python podem ser usados em expressões que deviam resultar em valores Booleanos, tais como as condições de instruções if ou while. Há vários objetos que são Falsy (ou seja, que são interpretados como False) quando estão “vazios” ou quando “não têm valor”, e caso contrário são Truthy (interpretados como True). Também podes definir este comportamento para os teus objetos se implementares o método dunder __bool__.

Os métodos str e repr do Python podem ser parecidos, mas não são iguais. Usa str sempre que precisares de representações bonitas de objetos e usa repr para depurares código. Seguindo a mesma lógica, deves ter estes casos típicos de utilização em mente quando as tuas classes implementam os métodos __str__ e __repr__.

O "operador morsa" := pode ser bastante útil, mas se o usares de forma errada vais acabar por piorar o teu código, em vez de o melhorares. Usa := para tornar mais linear uma série de ifs ou para reutilizar valores intermédios.

Em Python, se queres fazer uma operação que pode dar um erro, há muitas situações em que "pedir desculpa é melhor que pedir permissão". Isto significa que deves utilizar um bloco try para capturar o erro, em vez de usares um if para impedir que o erro aconteça.

Como é que devemos "desempacotar" uma lista ou um tuplo, de modo a separar o primeiro elemento do resto? Ou de modo a separar o último elemento do resto? Não desempacotes com fatias, usa antes atribuições com um asterisco.

O “Zen of Python” é um conjunto de sugestões que são impressas no teu ecrã se executares o código import this. Se nunca leste o Zen do Python vai lê-lo agora e relê-o de tempos a tempos. Para escreveres código que pareça ter sido escrito por alguém que domina verdadeiramente Python tens de escrever código que segue o Zen do Python.

"Pydon'ts" são dicas curtas, objetivas e úteis de programação em Python. Uma Pydon't descreve algo que não devias fazer quando programas em Python. Em geral, se seguires as Pydon'ts vais acabar por escrever código mais idiomático.