了解嵌套函数Python 3.8中的执行顺序

时间:2019-12-01 17:50:40

标签: python function interpreter execution flow

尝试了解执行流程的新手总数,请看以下代码:

from datetime import datetime
from time import *

def time_decorator(function,a=0):
    a +=1
    print(a)
    def wrapper(*args,**kwargs):
        t1= time()
        result = function(*args,**kwargs)
        t2 = time() - t1
        print("elapsed:", t2)
        return result
    a +=2
    print(a)
    return wrapper
@time_decorator
def add(x, y=10):
    sleep(2)
    return x + y

print (add(10))

输出如下:

1
3
elapsed: 2.0001702308654785
20
1
3

我的问题是,为什么“ a”的最后两个值在最后两行中都相同???我希望将其再增加两个??……我不理解翻译的执行流程,请帮助!!

1 个答案:

答案 0 :(得分:0)

装饰器只是函数应用程序的一种奇特形式。

Start()

等同于

@time_decorator
def add(x, y=10):
    sleep(2)
    return x + y

涉及变量def add(x, y=10): sleep(2) return x + y add = time_decorator(add) 的输出仅在调用a时发生,而不是在调用函数time_decorator时发生。