Python

Tema 2 · Funcions i mòduls

Introducció

Les funcions permeten reutilitzar codi i fer-lo més llegible. Un mòdul és un fitxer que conté funcions i variables que es poden importar des d'altres scripts. Python inclou una gran biblioteca estàndard (math, os, sys...) i la possibilitat de crear els teus propis mòduls.

Objectius

  • Definir funcions amb def, paràmetres i valors de retorn
  • Importar mòduls de la biblioteca estàndard (import, from ... import)
  • Crear el teu propi mòdul amb funcions reutilitzables
  • Fer un conversor complet d'unitats mèdiques

Funcions bàsiques

Una funció simple per calcular la dosi d'un medicament:

def calcular_dosi(pes_kg, dosi_per_kg):
    """Retorna la dosi total en mg."""
    return pes_kg * dosi_per_kg

# Exemple d'ús
pacient = 70  # kg
dosi_recomanada = 5  # mg/kg/dia
total = calcular_dosi(pacient, dosi_recomanada)
print(f"Dosi total: {total} mg/dia")

Funció amb paràmetres per defecte i validació:

def ajustar_dosi(dosi, funcio_renal=100):
    """
    Ajusta la dosi segons la funció renal (%).
    Si és < 60%, es redueix la dosi proporcionalment.
    """
    if funcio_renal < 60:
        factor = funcio_renal / 100
        return dosi * factor
    return dosi

print(ajustar_dosi(500, 80))   # 500 (funció normal)
print(ajustar_dosi(500, 45))   # 225 (reduïda)

Mòduls: importació i creació

Importar funcions del mòdul math per a càlculs farmacocinètics:

import math

def semivida_a_constante(t_half):
    """Converteix la semivida (hores) a constant d'eliminació."""
    return math.log(2) / t_half

t12 = 4.5  # hores
k = semivida_a_constante(t12)
print(f"Constant d'eliminació: {k:.4f} h⁻¹")

Crear el teu propi mòdul conversor.py i utilitzar-lo des d'un altre script:

# Fitxer: conversor.py
def mg_a_g(mg):
    return mg / 1000

def g_a_mg(g):
    return g * 1000

def celsius_a_fahrenheit(c):
    return (c * 9/5) + 32

# Fitxer: principal.py
from conversor import mg_a_g, celsius_a_fahrenheit

print(mg_a_g(500))          # 0.5
print(celsius_a_fahrenheit(37))  # 98.6
Desa conversor.py al mateix directori que principal.py

Exercicis

  1. Defineix una funció imc(pes, alcada) que retorni l'índex de massa corporal i la classificació (baix pes, normal, sobrepès...).
  2. Crea un mòdul farmacologia.py amb funcions per calcular la depuració de creatinina (Cockcroft-Gault) i importa'l en un altre script.
  3. Utilitza from math import pi, sqrt per calcular l'àrea d'una cèl·lula esfèrica a partir del seu diàmetre.

Mini Projecte – Conversor d'unitats farmacològiques

Construeix un programa amb les característiques següents:

  • Crea un mòdul unitats.py amb funcions per convertir: mg ↔ g, mL ↔ L, mmHg ↔ atm, °C ↔ °F.
  • Des d'un script principal, mostra un menú que pregunti a l'usuari quina conversió vol fer.
  • Utilitza funcions amb paràmetres i retorn, evitant codi repetitiu.
  • Per a cada conversió, demana el valor i mostra el resultat amb 2 decimals.
  • Inclou una opció per calcular la dosi d'un medicament (mg/kg) a partir del pes del pacient.

Organitza el codi en almenys dos fitxers: unitats.py i menu.py.