Python 装饰器的理解

装饰器是一个特殊的函数,它接受一个函数作为参数,并返回一个新的函数。

通过使用装饰器,可以在不修改原始函数代码的情况下扩展其功能,增加代码的灵活性和可维护性

装饰器在定义之后立即跟在需要被装饰的函数的定义之前,使用@符号。

  1. 目的:装饰函数,既修改或增强函数的行为
  2. 作用对象:函数
  3. 调用方式:自动应用于目标函数,不需要直接调用
def greet(name):  
    print(f"Hello, {name}!")

# 使用装饰器来增强这个函数的行为,添加一个计时功能:
import time  
  
def timing_decorator(func):  
    def wrapper(*args, **kwargs):  
        start_time = time.time()  
        result = func(*args, **kwargs)  
        end_time = time.time()  
        print(f"Function {func.__name__} took {end_time - start_time} seconds to execute.")  
        return result  
    return wrapper  
  
# 使用装饰器  
@timing_decorator  
def greet(name):  
    time.sleep(1)  # 假设这个函数需要一些时间来完成  
    print(f"Hello, {name}!")  
  
# 调用greet函数  
greet("Alice")

输出为:

Hello, Alice!  
Function greet took 1.00xxxx seconds to execute.

Function greet took这行代码是装饰器timing_decoratorwrapper函数打印的,用于显示函数greet的执行时间。

首先,greet函数内部的time.sleep(1)会让程序暂停1秒来模拟函数执行需要一些时间。

然后,wrapper函数计算了函数执行前后的时间差,并打印出来。

最后,wrapper函数返回了greet函数的执行结果,即打印"Hello, Alice!"。

你可能感兴趣的:(python)