{site_name}

{site_name}

🌜 搜索

Decorator 是一种 Python 编程语言的特性,它可以用来修改或增强现有函数或类的行为

前端 𝄐 0
es6的新特性,es6的symbol是什么,es6的解构赋值,es6 灯,es6 等两个接口返回成功执行,es6的map和set
Decorator 是一种 Python 编程语言的特性,它可以用来修改或增强现有函数或类的行为。Decorator 充分利用了 Python 中函数和类都是“一等公民”(first-class citizen)这一特性,因此可以在不修改被装饰对象源代码的情况下,动态地添加或删除一些功能。

在 Python 中,一个 decorator 本质上是一个高阶函数,它接受一个函数(或类)作为参数,并返回一个新的函数(或类)。新的函数或类通常会在调用原来的函数或类之前或之后执行某些操作,比如记录日志、检查参数、缓存结果等。

下面是一个简单的例子,演示如何使用 decorator 来记录函数的运行时间:

python
import time

def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} takes {end_time - start_time:.6f} seconds")
return result
return wrapper

@timer
def slow_function(n):
"""模拟一个耗时的函数"""
time.sleep(n)
return n

result = slow_function(2)
print(result)


在上面的代码中,我们定义了一个名为 timer 的 decorator,它会计算被装饰函数的运行时间,并打印出来。然后,我们用 @timer 语法将 slow_function 函数声明为一个被 timer 装饰的函数。当我们调用 slow_function(2) 时,实际上会调用 wrapper 函数,它会在执行 slow_function 前后记录时间。运行结果类似于:


slow_function takes 2.002192 seconds
2


可以看到,虽然我们没有修改 slow_function 的源代码,但是通过使用 decorator,我们成功地为它添加了一个新的功能。