Каким образом функция 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)
Комментариев нет:
Отправить комментарий