-
Introducere în biblioteca functools
- Ce este biblioteca functools și scopul său
- Importarea bibliotecii functools și examinarea funcțiilor disponibile
-
Funcția
functools.reduce()- Cum funcționează
reduce() - Exemple de utilizare a funcției
reduce() - Compararea cu funcția
itertools.accumulate() - Exerciții practice
- Cum funcționează
-
Funcția
functools.partial()- Cum funcționează
partial() - Exemple de utilizare a funcției
partial() - Exerciții practice
- Cum funcționează
-
Funcția
functools.lru_cache()- Ce este memoization și cum poate îmbunătăți performanța
- Cum funcționează decoratorul
lru_cache() - Exemple de utilizare a funcției
lru_cache() - Exerciții practice
-
Funcții
functools.total_orderingșifunctools.cmp_to_key()- Cum funcționează decoratorul
total_ordering - Exemple de utilizare a funcției
total_ordering - Cum funcționează funcția
cmp_to_key() - Exemple de utilizare a funcției
cmp_to_key() - Exerciții practice
- Cum funcționează decoratorul
Exemple și exerciții pentru fiecare subpunct:
Exemplu: functools.reduce()
import functools
produs = functools.reduce(lambda x, y: x * y, [1, 2, 3, 4, 5])
print(produs) # Output: 120
Exercițiu:
Folosiți functools.reduce() pentru a calcula suma pătratelor numerelor dintr-o listă.
Exemplu: functools.partial()
import functools
def inmultire(x, y):
return x * y
dublu = functools.partial(inmultire, 2)
print(dublu(5)) # Output: 10
Exercițiu:
Folosiți functools.partial() pentru a crea o funcție care ridică la pătrat numerele.
Exemplu: functools.lru_cache()
import functools
@functools.lru_cache(maxsize=None)
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(100)) # Output: 354224848179261915075
Exercițiu:
Aplicați memoization cu ajutorul functools.lru_cache() pentru a calcula factorialul unui număr.
Exemplu: functools.total_ordering
import functools
@functools.total_ordering
class Zecimal:
def __init__(self, zecimal):
self.zecimal = zecimal
def __eq__(self, other):
return self.zecimal == other.zecimal
def __lt__(self, other):
return self.zecimal < other.zecimal
a = Zecimal(0.5)
b = Zecimal(0.3)
print(a > b) # Output: True
Exercițiu:
Implementați o clasă Fractie folosind functools.total_ordering pentru a compara fracții.
Exemplu: functools.cmp_to_key()
import functools
def comparare(a, b):
return len(a) - len(b)
lista_cuvinte = ["pisica", "caine", "elefant", "cal", "urs"]
lista_sortata = sorted(lista_cuvinte, key=functools.cmp_to_key(comparare))
print(lista_sortata) # Output: ['cal', 'urs', 'caine', 'pisica', 'elefant']
Exercițiu:
Sortați o listă de numere în funcție de numărul de divizori, folosind functools.cmp_to_key().
Rezumat:
În această lecție, am învățat despre biblioteca functools și cum să folosim funcțiile sale pentru a îmbunătăți performanța și pentru a simplificacodul în programarea funcțională. Am explorat funcții precum reduce(), partial(), lru_cache(), total_ordering și cmp_to_key(), înțelegând cum funcționează și cum să le aplicăm în diverse situații.
Am realizat exerciții practice pentru a ne familiariza cu utilizarea acestor funcții și să ne dezvoltăm abilitățile în programarea funcțională.