1
resposta

[Sugestão] Aula sobre funções

Pessoal, nesta aula aprendemos sobre built-in functions, criação de funções com parâmetros e retornos, documentação com type hint, valores padrão, docstrings e também funções lambda.

Relacionando isso com a dúvida anterior: em uma situação onde temos notas armazenadas em um dicionário e precisamos calcular a média de uma quantidade variável de valores, qual seria a abordagem mais adequada utilizando built-in functions?

Pelo meu entendimento, funções nativas como sum(), len() e round() ajudam a tornar a solução mais simples e legível. Vocês consideram essa a melhor prática ou existem outras abordagens que também valem a pena discutir?

1 resposta

Olá, Felisberto. Como vai?

Sua reflexão é excelente e toca em um ponto fundamental da programação em Python: a escrita de código "pythônico", que preza pela simplicidade e legibilidade.

Você está corretíssimo. Para calcular a média de valores em um dicionário, a abordagem utilizando as built-in functions sum() e len() é considerada a melhor prática na maioria dos cenários do dia a dia. Ela é eficiente e permite que qualquer outra pessoa que leia seu código entenda a intenção imediatamente.

Abordagem com Built-in Functions

Se tivermos um dicionário de notas, a implementação ficaria assim:

notas = {'Matemática': 8.5, 'Português': 7.0, 'História': 9.0}

# Extraindo apenas os valores do dicionário
valores = notas.values()

# Calculando a média de forma direta
media = sum(valores) / len(valores)

print(f'A média arredondada é: {round(media, 2)}')

Outras Abordagens para Discussão

Embora o uso de funções nativas seja o ideal para scripts simples, em Data Science existem outras abordagens que valem a pena mencionar:

  • Biblioteca Statistics: O Python possui um módulo nativo chamado statistics. Ele oferece a função mean(), que deixa o código ainda mais semântico.
import statistics
media = statistics.mean(notas.values())
  • NumPy: Se você estiver lidando com volumes massivos de dados, a biblioteca NumPy é a escolha profissional. Ela é otimizada para cálculos matemáticos e processa grandes listas de números muito mais rápido que as funções nativas.
import numpy as np
media = np.mean(list(notas.values()))

Boas Práticas e Type Hints

Como você mencionou os type hints e docstrings, uma forma elegante de empacotar essa lógica seria criando uma função documentada:

def calcular_media(notas: dict) -> float:
    """
    Calcula a média aritmética dos valores de um dicionário.
    :param notas: Dicionário contendo nomes de disciplinas e notas.
    :return: Valor da média calculada.
    """
    if not notas:
        return 0.0
    return sum(notas.values()) / len(notas.values())

Conclusão: Para a maioria dos casos em Python puro, sua sugestão de usar sum() e len() é a mais adequada por ser performática e evitar a importação de bibliotecas desnecessárias. A escolha por outras ferramentas (como NumPy) deve acontecer quando a complexidade ou o volume dos dados exigir maior poder de processamento.

Espero que possa ter lhe ajudado!