Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Python декораторы

Каким образом функция func() передалась как аргумент в функцию deco() ?
ps = input("Введите пароль:")
def test_pass(p): def deco(f): if p == "universe": return f else: return lambda: "Access denied" return deco
@test_pass(ps) def func(): return "Access approval"
print(func())


Ответ

Грубо говоря, Python разворачивает конструкцию
@test_pass(ps) def func(): ...
в
def func(): ...
decorator = test_pass(ps) # В два шага для понятности func = decorator(func)

Комментариев нет:

Отправить комментарий