Tagowanie funkcji
Tagowanie oznacza przypisanie czemuś jednego lub więcej ciągów znaków pełniących rolę etykiet. Na przykład często tagujemy e-maile lub zdjęcia, żeby móc je później łatwo odnaleźć. Postanowiłeś napisać dekorator, który pozwoli ci tagować funkcje dowolną listą tagów. Takie tagi można wykorzystać na wiele sposobów:
- Dodawanie informacji o tym, kto pracował nad funkcją – żeby użytkownik wiedział, do kogo się zwrócić w razie problemów.
- Oznaczanie funkcji jako „eksperymentalne", sygnalizując, że ich dane wejściowe i wyjściowe mogą się w przyszłości zmienić.
- Zaznaczanie funkcji, które planujesz usunąć w kolejnej wersji kodu.
- I wiele innych zastosowań.
To ćwiczenie jest częścią kursu
Pisanie funkcji w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj nowy dekorator o nazwie
decorator(), który zostanie zwrócony. - Zadbaj o to, aby udekorowana funkcja zachowała swoje metadane.
- Wywołaj dekorowaną funkcję i zwróć jej wynik.
- Zwróć nowy dekorator.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)