Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!

Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount

Dekoratory


Dekoratory pozwalają na proste modyfikacje obiektów wywoływalnych, takich jak funkcje, metody lub klasy. W tym tutorialu zajmiemy się funkcjami. Składnia

jest równoważna:

Jak można było zauważyć, dekorator to po prostu inna funkcja, która przyjmuje funkcję i zwraca jedną. Na przykład możesz zrobić to:

To spowoduje, że funkcja zostanie uruchomiona dwa razy.

Możesz również zmienić wynik

zmienić dane wejściowe

i dokonać sprawdzenia.

Załóżmy, że chcesz pomnożyć wynik przez zmienną. Możesz zdefiniować dekorator i użyć go w następujący sposób:

Możesz zrobić cokolwiek chcesz z tą starą funkcją, nawet zupełnie ją zignorować! Zaawansowane dekoratory mogą także manipulować docstringiem i ilością argumentów. Dla bardziej zaawansowanych dekoratorów, odwiedź http://wiki.python.org/moin/PythonDecoratorLibrary.

Ćwiczenie

Stwórz fabrykę dekoratorów, która zwraca dekorator dekorujący funkcje z jednym argumentem. Fabryka powinna przyjmować jeden argument, typ, a następnie zwracać dekorator, który sprawdza, czy dane wejściowe są poprawnego typu. Jeśli typ jest nieprawidłowy, powinno być wyświetlone "Bad Type" (w rzeczywistości powinno wystąpić podniesienie błędu, ale nie omawiamy tego w tym tutorialu). Skorzystanie z isinstance(object, type_of_object) lub type(object) może pomóc.

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial Take the Test
Copyright © learnpython.org. Read our Terms of Use and Privacy Policy