Рубрики
Без рубрики

Мой взгляд в питонные декораторы.

Концепция декораторов Python неясно для многих людей, хотя это просто. По этой причине … с меткой Python.

Концепция декораторов 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”