Зачем нужно возвращать функции-оболочки (декораторы в python) - PullRequest
0 голосов
/ 11 июня 2018

Может кто-нибудь объяснить, почему функции-оболочки в декораторах нужно возвращать, а также почему

def decorate(func):
    def wrapper():
        print("Text")
        test_function()

@decorate
def test_function():
  print("More text")

test_function()

создает объект NoneType, который не вызывается, а не

def decorate(func):
    def wrapper():
        print("Text")
        test_function()
    return wrapper

@decorate
def test_function():
    print("More text")

test_function()

1 Ответ

0 голосов
/ 11 июня 2018

Поскольку

@decorator
def f():
    ...

в точности эквивалентно

def f():
    ...
f = decorator(f)

Поэтому decorator должен что-то вернуть, чтобы это имело смысл, иначе f будет None.

...