Python将一个函数传入一个函数:为什么我们要使用装饰器?

问题描述 投票:-2回答:1

为什么我们要使用有两层函数的装饰符,而我们可以只使用一层函数?

例如

def time_func(func):
    print('Starting')
    t0=time()
    out = func()
    print('Ending',time()-t0
    return out

现在time_func()可以接受任何一个函数 并像装饰器一样完成它的工作。我错过了什么?

python python-decorators
1个回答
0
投票

装饰者的定义是接受一个函数,然后返回一个新的函数来替换被装饰的函数。你的函数并没有这样做,你的函数只是接受一个函数并调用它,这不是一个装饰器,这只是一个函数接受回调的行为。

至于为什么要用装饰器,就是为了给函数增加功能,而不需要把这些代码写进函数本身,既让被装饰的函数更简单,又让装饰行为可以重用。唯一的另一种选择就是让调用者承担起包裹每个函数调用的责任,但这显然也是不太明智的。

© www.soinside.com 2019 - 2024. All rights reserved.