Что и почему получается при запуске tmp ()? - PullRequest
0 голосов
/ 01 декабря 2018

Я думаю, что tmp () то же самое с f2 ().Но я получаю 2 разных результата.

def w1(func):
    def inner():
        print("Verifying ......")
        return func()
    return inner

@w1
def f2():
   print('f2')

f2()
print("Equivalently:") 
tmp = w1(f2)
tmp()

1 Ответ

0 голосов
/ 01 декабря 2018

Ответы tmp() и f() различны, потому что когда мы присваиваем tmp=w1(f2) tmp, теперь указывается на внутреннюю функцию inner().Помните, что вы возвращаете inner как функцию, когда вызываете w1(f2), потому что выполняется "Verifying ......".И когда вы вызываете tmp(), он снова выполняет inner() с f2().Вот причина, почему tmp() и f() различны.

...