En aquest tema, explorarem els diferents tipus d'arguments que podem utilitzar en les funcions de Python. Els arguments permeten passar informació a les funcions, fent-les més flexibles i reutilitzables.

Tipus d'Arguments

  1. Arguments Posicionals

Els arguments posicionals són els més comuns i es passen a la funció en l'ordre en què es defineixen.

def saluda(nom, edat):
    print(f"Hola, {nom}. Tens {edat} anys.")

# Crida a la funció amb arguments posicionals
saluda("Anna", 30)

  1. Arguments Només per Nom

Els arguments només per nom es defineixen després d'un asterisc (*) en la definició de la funció. Aquests arguments han de ser passats per nom en la crida a la funció.

def saluda(*, nom, edat):
    print(f"Hola, {nom}. Tens {edat} anys.")

# Crida a la funció amb arguments només per nom
saluda(nom="Anna", edat=30)

  1. Arguments per Defecte

Els arguments per defecte permeten especificar un valor per defecte per a un argument. Si no es proporciona un valor per a aquest argument en la crida a la funció, s'utilitzarà el valor per defecte.

def saluda(nom, edat=25):
    print(f"Hola, {nom}. Tens {edat} anys.")

# Crida a la funció amb i sense l'argument per defecte
saluda("Anna")
saluda("Joan", 30)

  1. Arguments Arbitràris

Els arguments arbitràris permeten passar un nombre variable d'arguments a una funció. Hi ha dos tipus principals:

a. Arguments Posicionals Arbitràris (*args)

Permet passar un nombre variable d'arguments posicionals.

def suma(*args):
    total = sum(args)
    print(f"La suma és: {total}")

# Crida a la funció amb un nombre variable d'arguments
suma(1, 2, 3)
suma(4, 5, 6, 7, 8)

b. Arguments Només per Nom Arbitràris (**kwargs)

Permet passar un nombre variable d'arguments per nom.

def mostra_info(**kwargs):
    for clau, valor in kwargs.items():
        print(f"{clau}: {valor}")

# Crida a la funció amb un nombre variable d'arguments per nom
mostra_info(nom="Anna", edat=30, ciutat="Barcelona")

Exercicis Pràctics

Exercici 1: Arguments Posicionals i per Defecte

Escriu una funció descripcio_persona que accepti els arguments nom, edat (amb un valor per defecte de 25) i ciutat (amb un valor per defecte de "Barcelona"). La funció ha de imprimir una descripció de la persona.

def descripcio_persona(nom, edat=25, ciutat="Barcelona"):
    print(f"{nom} té {edat} anys i viu a {ciutat}.")

# Solució
descripcio_persona("Anna")
descripcio_persona("Joan", 30)
descripcio_persona("Maria", 22, "Madrid")

Exercici 2: Arguments Arbitràris

Escriu una funció producte que accepti un nombre variable d'arguments posicionals i retorni el producte de tots els arguments.

def producte(*args):
    resultat = 1
    for num in args:
        resultat *= num
    return resultat

# Solució
print(producte(1, 2, 3))  # 6
print(producte(4, 5, 6, 7))  # 840

Exercici 3: Arguments Només per Nom Arbitràris

Escriu una funció detalls_estudiant que accepti arguments per nom arbitràris i imprimeixi els detalls de l'estudiant.

def detalls_estudiant(**kwargs):
    for clau, valor in kwargs.items():
        print(f"{clau}: {valor}")

# Solució
detalls_estudiant(nom="Anna", edat=20, curs="Python", ciutat="Barcelona")

Resum

En aquesta secció, hem après sobre els diferents tipus d'arguments que podem utilitzar en les funcions de Python:

  • Arguments posicionals
  • Arguments només per nom
  • Arguments per defecte
  • Arguments arbitràris (*args i **kwargs)

Aquest coneixement ens permet crear funcions més flexibles i reutilitzables, millorant la nostra capacitat per escriure codi eficient i mantenible. En la propera secció, explorarem les funcions lambda, que són una manera concisa de definir funcions petites.

Curs de Programació en Python

Mòdul 1: Introducció a Python

Mòdul 2: Estructures de Control

Mòdul 3: Funcions i Mòduls

Mòdul 4: Estructures de Dades

Mòdul 5: Programació Orientada a Objectes

Mòdul 6: Gestió de Fitxers

Mòdul 7: Gestió d'Errors i Excepcions

Mòdul 8: Temes Avançats

Mòdul 9: Proves i Depuració

Mòdul 10: Desenvolupament Web amb Python

Mòdul 11: Ciència de Dades amb Python

Mòdul 12: Projecte Final

© Copyright 2024. Tots els drets reservats