Melhores Práticas para Declarações Condicionais em Python

Melhores Práticas para Declarações Condicionais em Python

Este artigo explica as melhores práticas para declarações condicionais em Python.

YouTube Video

Melhores Práticas para Declarações Condicionais em Python

A instrução if no Python é uma construção fundamental para a implementação de ramificações condicionais, e impacta significativamente a legibilidade e a manutenção do código. Aqui, discutiremos em detalhes as melhores práticas para o uso de instruções if.

Use expressões condicionais explícitas

Escreva expressões condicionais de forma concisa e explícita, evitando declarações redundantes.

1condition = True
2
3### Bad Example
4if condition == True:
5    pass
6
7### Good Example
8if condition:
9    pass
  • No Python, você pode indicar que uma condição é verdadeira escrevendo if condition:.

Combinando várias condições

Ao combinar várias condições, use and ou or. No entanto, quando as expressões condicionais tornam-se complexas, a legibilidade pode diminuir, então considere os seguintes ajustes:.

 1age = 15
 2is_student = True
 3
 4### Bad Example
 5# Complex condition
 6if (age > 18 and age < 65) or (is_student and age > 15):
 7    pass
 8
 9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15    pass
  • Dividindo as condições e atribuindo-as a variáveis, a legibilidade pode ser melhorada.

Avaliação de curto-circuito com and/or

Em expressões condicionais usando and ou or, se o resultado pode ser determinado apenas pelo valor da esquerda, ocorre uma avaliação de curto-circuito e o lado direito não é avaliado. Compreender isso ajuda a evitar processamentos desnecessários e prevenir erros.

 1user = None
 2def expensive_check():
 3    return True
 4
 5# Example of short-circuiting with 'and'
 6if user and user.is_active:
 7    # If user is None, user.is_active will NOT be evaluated
 8    print("Active user found.")
 9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12    # If user.is_admin is True, expensive_check will NOT be called.
13    print("Access granted.")
14else:
15    print("Access denied.")
  • Ao utilizar a avaliação de curto-circuito, você pode melhorar a eficiência e a segurança do processamento.

Precedência de and e or

and tem maior precedência do que or. Portanto, ao combinar condições de forma ingênua, você pode obter resultados inesperados. É importante usar parênteses para deixar suas intenções claras.

 1age = 15
 2is_student = True
 3
 4### Unclear example
 5# This is interpreted as: age > 18 and (age < 65 or is_student)
 6if age > 18 and age < 65 or is_student:
 7    pass
 8
 9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12    pass
  • Ao usar parênteses, você pode esclarecer a precedência de and e or, reduzindo o risco de bugs inesperados.

Entenda Truthy e Falsy

No Python, os seguintes valores são avaliados como False:.

  • Nenhum
  • Falso
  • O número 0 (incluindo 0.0)
  • Tipos de sequências vazias (como listas, tuplas ou strings vazias)
    • Exemplos: [], (), ""
  • Dicionário vazio
    • Exemplo: {}

Aproveitar isso pode ajudar a simplificar suas expressões condicionais.

1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5    pass
6
7### Good Example
8if items:
9    pass

Uso adequado de elif e else

Ao avaliar várias condições, use elif. Use else para definir um comportamento padrão no final.

 1score = 80
 2
 3if score >= 90:
 4    grade = "A"
 5elif score >= 80:
 6    grade = "B"
 7elif score >= 70:
 8    grade = "C"
 9else:
10    grade = "F"
  • else não é obrigatório. Se todas as condições forem atendidas, isso pode ser omitido.
  • Preste atenção à ordem das expressões condicionais e organize-as logicamente, sem redundância.

Limite a profundidade de aninhamento.

O aninhamento profundo de instruções if torna o código mais difícil de ler.

 1def access_resource():
 2    return True
 3
 4### Bad Example
 5def deep_nest(user, resource):
 6    if user.is_authenticated:
 7        if user.has_permission:
 8            if resource.is_available:
 9                access_resource()
10
11### Good Example
12def early_return(user, resource):
13    if not user.is_authenticated:
14        return
15    if not user.has_permission:
16        return
17    if not resource.is_available:
18        return
19
20    access_resource()
  • O uso de retornos antecipados pode reduzir o aninhamento e tornar o código mais conciso.

Evite usar instruções if de uma única linha.

É possível escrever instruções if em uma única linha, mas isso pode reduzir a legibilidade.

 1condition = False
 2def do_something():
 3    return True
 4
 5### Bad Example
 6if condition: do_something()
 7
 8### Good Example
 9if condition:
10    do_something()
  • O uso de instruções if de uma linha só é aceitável apenas para condições ou ações curtas, mas evite escrever um código excessivamente extenso.

Simplificando com o operador ternário ou or

Para ramificações condicionais simples, usar o operador ternário ou or pode tornar seu código mais conciso. No entanto, o uso excessivo desses recursos pode tornar seu código mais difícil de ler, portanto devem ser usados apenas para condições simples e intuitivas.

 1is_admin = True
 2input_name = None
 3
 4# Regular if statement
 5if is_admin:
 6    role = "Administrator"
 7else:
 8    role = "User"
 9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"
  • Para condições simples, o uso do operador ternário ou or pode deixar seu código mais curto e fácil de entender.

Armazenamento em cache de expressões condicionais.

Expressões condicionais que envolvem cálculos caros ou chamadas de funções podem ser armazenadas em cache em variáveis para melhorar o desempenho.

 1def expensive_function():
 2    pass
 3
 4def another_expensive_function():
 5    pass
 6
 7### Bad Example
 8if expensive_function() and another_expensive_function():
 9    pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15    pass

Resumo

As instruções if do Python são ferramentas simples e poderosas, mas o uso inadequado pode tornar o código complexo e difícil de ler. Ao adotar as melhores práticas apresentadas aqui, você pode melhorar a legibilidade, a manutenção e a eficiência do seu código.

Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.

YouTube Video