Python装饰器是一种非常有用的工具,它可以让我们在不修改函数代码的情况下增加额外的功能。以下是一些关于Python装饰器的基础知识和示例。

装饰器是什么?

装饰器本质上是一个函数,它接收一个函数作为参数,并在不修改该函数代码的情况下,增加一些额外的功能。装饰器常用于日志记录、函数计时、访问控制等场景。

装饰器的基本用法

以下是一个简单的装饰器示例,它会在函数执行前后打印出一些信息:

def my_decorator(func):
    def wrapper():
        print("装饰器:执行前...")
        func()
        print("装饰器:执行后...")
    return wrapper

@my_decorator
def say_hello():
    print("Hello, world!")

say_hello()

当执行 say_hello() 函数时,会输出:

装饰器:执行前...
Hello, world!
装饰器:执行后...

装饰器参数

装饰器可以接受参数,以下是带参数的装饰器示例:

def decorator_with_args(arg):
    def my_decorator(func):
        def wrapper():
            print(f"装饰器参数:{arg}")
            func()
        return wrapper
    return my_decorator

@decorator_with_args("你好")
def say_hello():
    print("Hello, world!")

say_hello()

执行 say_hello() 函数时,会输出:

装饰器参数:你好
Hello, world!

更多装饰器应用

装饰器可以应用于类和方法,以下是一个在类中使用装饰器的示例:

def make_blink(func):
    def wrapper(*args, **kwargs):
        return f"<blink>{func(*args, **kwargs)}</blink>"
    return wrapper

@make_blink
def hello():
    return "Hello, world!"

print(hello())

执行结果:

<blink>Hello, world!</blink>

以上就是Python装饰器的基础知识和一些应用示例。更多关于Python装饰器的知识,您可以访问我们的Python高级教程进行学习。