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
- 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)
- 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)
- 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)
- 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
- Introducció a Python
- Configuració de l'Entorn de Desenvolupament
- Sintaxi de Python i Tipus de Dades Bàsics
- Variables i Constants
- Entrada i Sortida Bàsiques
Mòdul 2: Estructures de Control
Mòdul 3: Funcions i Mòduls
- Definició de Funcions
- Arguments de Funció
- Funcions Lambda
- Mòduls i Paquets
- Visió General de la Biblioteca Estàndard
Mòdul 4: Estructures de Dades
Mòdul 5: Programació Orientada a Objectes
Mòdul 6: Gestió de Fitxers
- Lectura i Escriptura de Fitxers
- Treballant amb Fitxers CSV
- Gestió de Dades JSON
- Operacions amb Fitxers i Directoris
Mòdul 7: Gestió d'Errors i Excepcions
Mòdul 8: Temes Avançats
- Decoradors
- Generadors
- Gestors de Context
- Concurrència: Fils i Processos
- Asyncio per a Programació Asíncrona
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb unittest
- Desenvolupament Guiat per Proves
- Tècniques de Depuració
- Ús de pdb per a la Depuració
Mòdul 10: Desenvolupament Web amb Python
- Introducció al Desenvolupament Web
- Conceptes Bàsics del Framework Flask
- Construcció d'APIs REST amb Flask
- Introducció a Django
- Construcció d'Aplicacions Web amb Django
Mòdul 11: Ciència de Dades amb Python
- Introducció a la Ciència de Dades
- NumPy per al Càlcul Numèric
- Pandas per a la Manipulació de Dades
- Matplotlib per a la Visualització de Dades
- Introducció al Machine Learning amb scikit-learn