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

Декораторы


Декораторы позволяют вносить простые изменения в вызываемые объекты, такие как функции, методы или классы. В этом учебнике мы рассмотрим функции. Синтаксис

Эквивалентен:

Как вы могли заметить, декоратор — это просто еще одна функция, которая принимает функцию и возвращает ее. Например, вы можете сделать так:

Это сделает так, что функция выполнится дважды.

Вы также можете изменить вывод

изменить ввод

и выполнять проверки.

Предположим, вы хотите умножить вывод на переменное количество. Вы можете определить декоратор и использовать его следующим образом:

Вы можете делать с старой функцией что угодно, даже полностью игнорировать ее! Продвинутые декораторы могут также изменять строку документации и число аргументов. Для некоторых крутых декораторов зайдите на http://wiki.python.org/moin/PythonDecoratorLibrary.

Exercise

Создайте фабрику декораторов, которая возвращает декоратор для декорирования функций с одним аргументом. Фабрика должна принимать один аргумент, тип, и возвращать декоратор, который заставляет функцию проверять, относится ли вход к правильному типу. Если тип неправильный, следует выводить print("Bad Type") (на самом деле, должна возбуждаться ошибка, но в этом учебнике ошибки не рассматриваются). Если вы запутались, посмотрите на пример кода и ожидаемый вывод. Использование isinstance(object, type_of_object) или type(object) может помочь.

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