Functional
Programació Funcional en Python
El concepte / paradigma de la programació funcional fa referència a un estil de programació que utilitza les funcions com a unitat bàsica de codi.
Hi ha des de llenguatges purament funcionals com ara Haskell o Lisp, fins a llenguatges multiparadigma com Python, així que no és tan fàcil separar els llenguatges que suporten la programació funcional.
Perquè un llenguatge permeti la programació funcional, ha de tractar les funcions com a ciutadans de primera classe. És el que passa amb Python; les funcions són objectes, igual que els strings, els números i les llistes.
Molts llenguatges donen suport a la programació funcional; com Javascript, C#, PHP i Java.
Anem a veure els conceptes més importants per entendre aquest paradigma.
Funcions pures.
Aquest paradigma tracta d’emprar el màxim possible de funcions pures (almenys una segur que hi ha)
Funcions pures:
- Sol llegeix els seus paràmetres d’entrada
- Sol escriu els seus paràmetres de sortida
- Pels mateixos paràmetres d’entrada sempre retorna els mateixos paràmetres de sortida.
- No tenen efectes colaterals fora de la funció.
Exemple funció pura:
return *2
# let's test
assert == 8Només podrem cridar funcions dins d’altres funcions sempre i quan siguin pures.
Exemple funció impura.
=
= ,
return
, ` global `.
:
```
returnPros:
- Són les funcions més reutilitzables.
- Més testejables.
És important que les funcions no tinguin gaires línies en general.
Encara que no usem Programació Funcional, val la pena usar funcions pures per minimitzar errors.
Funcions d’ordre superior.
A partir d’una funció pura i una col·lecció (llista, diccionari …) podem aplicar funcions d’ordre dintre dels seus elements.
Ens estalvien usar bucles, i a més a més són més elegants.
Les més habituals són:
- map, per editar tots els vaqlors
- filter, per filtrar un subconjunt.
- reduce, va bé per agrupar valors, però s’utilitza menys.
- zip, s’utilitza si volem treballar amb tuples.
Més endavant veurem que altres llibreries de dades, com Pandas, accepten funcions pures per recalcular les seves variables.
Ara toca veure amb exemples les possibilitats que ens ofereixen :)
Map.
Crea una llista de números i una funció per multiplicar per 3 un número; per tal que es mostrin per pantalla tots els números de la llista multiplicats per 3.
return * 3
# range genera sequències de números
# range (num_ini, num_fin, step)
: =
=
Filter.
Crea una llista de números (pex de notes d’alumnat) i una funció per a comprovar si el número és major o igual a 5, i fes que es mostrin per pantalla únicament els números de la llista majors o iguals que 5. Finalment, calcula el percentatge de números filtrats (els >=5) arrodonit a 2 decimals.
Estàs llegint una vista prèvia.
Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.
Inicia sessió