9 formas de deixar seu código mais pythonico

Paula Vieira
Loft
Published in
4 min readApr 12, 2022

1. Seguindo boas práticas

Quando estamos programando em uma certa linguagem, é muito melhor seguir as convenções definidas pela sua comunidade e fazer bom uso dos recursos que a linguagem oferece. Além de facilitar a avaliação e legibilidade do código por outras pessoas, também podemos tirar vantagem de recursos que otimizam a sua execução.

Algumas convenções são gerais e independem da linguagem, outras são mais específicas. No caso da linguagem Python, ela foi criada com o objetivo de ter a sintaxe limpa e concisa, então devemos tirar vantagem disso. Se você nunca tentou antes, escreva “import this” em um interpretador de Python e leia “O Zen do Python”. Esses são os princípios que norteiam o desenvolvimento em Python.

Aqui na Loft, buscamos seguir essas práticas e temos uma grande preocupação em criar uma cultura de qualidade de código através de code reviews.

2. Migração entre linguagens de programação

Às vezes, chega um ponto em nossa carreira que queremos enfrentar um novo desafio e pode ser que esse desafio envolva aprender uma nova linguagem de programação.

Quando fazemos essa migração entre linguagens, trazemos conosco uma grande bagagem de conhecimento. Então, essa transição costuma ser bem mais fácil do que aprender a programar do zero. Mas, devemos nos atentar às tais especificidades da nova linguagem que estamos aprendendo, porque quando “transportamos” soluções de uma linguagem para outra sem adaptações, podemos acabar desenvolvendo soluções que não são idiomáticas.

3. Dicas de recursos Pythonicos

Nesse artigo, reunimos alguns exemplos dos recursos que Python oferece para facilitar a legibilidade e a performance:

1.

Para: Loops simples em estruturas como listas e tuplas

Em vez de:

arr = [1,2,3]n = len(arr)i = 0while i < n:    print(arr[i])    i+=1

Use o for loop que simplifica muito a função retirando a necessidade de controlar o índice da lista:

for element in arr:    print(element)

2.

Para: Loops quando você precisa do índice da iteração

Em vez de:

i = 0for element in arr:    print(i, element)    i+=1

Use a função enumerate para te dar o índice, já que ela possibilita uma sintaxe mais concisa e você não tem o trabalho de incrementar a variável de controle:

for index, value in enumerate([7,8,9]):
print(index, value)

3.

Para: Verificar se um array possui um valor

Em vez de:

found = Falsefor value in arr:    if value == searched_value:        found = True        break

Use a palavra-chave in, que simplifica muito a função e deixa o trecho de código muito mais legível:

found = searched_value in arr

4.

Para: Abrir um arquivo

Em vez de:

f = open(‘file.txt’)#operationsf.close()

Use with, já que assim seu arquivo será fechado automaticamente depois da execução do bloco, mesmo que haja uma exceção no meio do caminho:

with open(‘file.txt’) as f:    #operations

Podemos usar a palavra-chave with até para abrir diversos arquivos na mesma linha de código:

with open(file1.txt’, ‘w’) as file_1, open(file2.txt’, ‘r’) as file_2:    #operations

5.

Para: Repetir a mesma chamada de função várias vezes

Em vez de:

def function(a, b):    return a + bresult = 0a, b = 1, 1while result < 100:    result += function(a, b)

Atribua a chamada da função a uma variável. Desse jeito você tem uma melhora de performance:

def function(a, b):    return a + b
result = 0a, b = 1, 2f = function(a, b)while result < 100: result += f

6.

Para: Iterar ao mesmo tempo por duas ou mais listas

Em vez de:

arr1 = [1, 2, 3, 4, 5]arr2 = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]for i in range(len(arr1)):    value_1 = arr1[i]    value_2 = arr2[i]    #operations

Use a palavra chave zip que combina os duas listas de forma muito mais simples, além de já fazer tratamento para os casos em que as listas possuem tamanho diferente:

arr1 = [1, 2, 3, 4, 5]arr2 = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]for value_1, value_2 in zip(arr1, arr2):    #operations

7.

Para atribuir elementos de uma tupla ou lista a variáveis

Em vez de:

tuple = (‘config1’, ‘config2’)config1 = tuple[0]config2 = tuple[1]

Use a atribuição múltipla que oferece uma sintaxe muito mais direta

tuple = (‘config1’, ‘config2’)config1, config2 = tuple

8.

Para fazer operações em lista

Em vez de:

result = []for i in range(len(list1)):    if list1[i] > 10:        result.append(operation(list1[i]))

Use list comprehension que é mais conciso, mais fácil de ler além de oferecer muitas possibilidades

result = [operation(element) for element in list1 if element > 10]

9.

Para verificar se uma variável está entre dois valores

Em vez de:

if x >= 1 and x <= 5:
#do something

Use os operadores de comparação encadeados

if 1 <= x <= 5:
#do something

4. Que tal entrar para o time de engenharia e se desenvolver com a gente?

Aqui na nossa squad estamos encarando o desafio de construir uma plataforma de dados imobiliários. Temos várias tecnologias na nossa stack, como PySpark, Databricks, serviços da AWS. Se interessou pelo desafio? Dá uma olhadinha nas nossas vagas: loft.vc/vagas!

5. Referências

[1] https://www.python.org/

[2] https://realpython.com/

--

--