Концепция декораторов Python неясно для многих людей, хотя это просто. По этой причине вы можете рассматривать декораторы Python в качестве функций высокого уровня в Python, который принимает еще одну функцию в качестве аргумента и возвращает другую функцию в качестве возвращаемого значения.
Python Decorators показывают, как языковые языковые программирования Python используют несколько функций в вашем небольшом и полезном пакете. Декораторы могут быть применены к классам и функциям, чтобы сделать программирование увлекательным. Они могут ускорить производительность, сократить и полностью изменить динамику того, что может сделать код.
Объяснение может выглядеть абстрактно, но если мы возьмем пример, он будет управляемым. Давайте продемонстрируем их, написав две разные функции и используя их для изучения концепции декораторов Python.
Например, если мы возьмем нашу функцию выше, мы можем украсить ее, как показано на фрагментах ниже.
def umbrella_function(function): name = 'Jerim Kaura' def inner_function(): print(name) function() return inner_function def another_function(): print('I am a computer science student') x = umbrella_function(another_function) x()
Выход:
Jerim Kaura I am a computer science student
В примере выше Umbrella_function ()
был декоратор, но когда мы говорим х (другой_функция)
Функция другой_функция ()
Получили оформление, а возвращенная функция была назначена для переменной x
.
Чтобы украсить функцию в Python, мы используем @
Символ наряду с именем функции декоратора и поместите его непосредственно выше определения функции. Например,
@umbrella_function def another_function(): print('I am a computer science student')
Выше то же самое, что
def another_function(): print('I am a computer science student') x = umbrella_function(another_function)
Передача параметров к декораторам
Иногда нам может потребоваться определить функцию декоратора, которая принимает параметры. Мы можем достичь этого, передавая параметры в функцию обертки, которую мы затем проходим к функции, которая оформлена.
def umbrella_function(function): def inner_function(args1, args2): print("Arguments passed are: {0}, {1}".format(args1,args2)) function(args1, args2) return inner_function @umbrella_function def another_function(name, age): print ('So, {name} is {age} years old and she is a {occupation}' .format(name = name, age = age, occupation = 'programmer')) another_function('Jerry', 18)
Выход:
Arguments passed are: Jerry, 18 So, Jerry is 18 years old, and she is a programmer
дальнейшее чтение
Чтобы узнать больше о декораторах Python, подумайте о том, как обсуждается концепция в Библиотека декоратора Python
Оригинал: “https://dev.to/jerimkaura/my-look-into-python-decorators-cma”