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)) # 840Exercici 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 (
*argsi**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
