Etichetează-ți funcțiile
A eticheta ceva înseamnă a-i atribui unul sau mai multe șiruri de caractere care funcționează ca etichete descriptive. De exemplu, etichetăm adesea emailurile sau fotografiile pentru a le putea găsi mai ușor ulterior. Ai decis să scrii un decorator care să îți permită să etichetezi funcțiile cu o listă arbitrară de etichete. Poți folosi aceste etichete în multe moduri:
- Adăugarea de informații despre cine a lucrat la funcție, astfel încât un utilizator să știe pe cine să contacteze dacă întâmpină dificultăți.
- Marcarea funcțiilor ca „experimentale", pentru ca utilizatorii să știe că intrările și ieșirile s-ar putea modifica în viitor.
- Semnalarea funcțiilor pe care plănuiești să le elimini într-o versiune viitoare a codului.
- Și altele.
Acest exercițiu face parte din cursul
Scrierea funcțiilor în Python
Instrucțiuni pentru exercițiu
- Definește un nou decorator, numit
decorator(), care să fie returnat. - Asigură-te că funcția decorată își păstrează metadatele.
- Apelează funcția care este decorată și returnează rezultatul.
- Returnează noul decorator.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
def tag(*tags):
# Define a new decorator, named "decorator", to return
def ____(____):
# Ensure the decorated function keeps its metadata
@____(____)
def wrapper(*args, **kwargs):
# Call the function being decorated and return the result
return ____(____, ____)
wrapper.tags = tags
return wrapper
# Return the new decorator
return ____
@tag('test', 'this is a tag')
def foo():
pass
print(foo.tags)