温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python装饰器怎么写

发布时间:2025-08-19 15:36:07 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在Python中,装饰器是一种特殊的函数,它可以用来修改或增强其他函数的功能,而不需要修改这些函数的代码。装饰器通常用于日志记录、访问控制、性能测试、事务处理等方面。

装饰器的基本思想是:定义一个函数,它接受另一个函数作为参数,并返回一个新的函数,这个新的函数通常会包含原函数的一些增强功能。

下面是一个简单的装饰器示例:

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

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

# 使用装饰器后的函数调用
say_hello()

当你运行这段代码时,输出将会是:

Something is happening before the function is called.
Hello!
Something is happening after the function is called.

在这个例子中,my_decorator 是一个装饰器,它接受一个函数 func 作为参数,并定义了一个内部函数 wrapperwrapper 函数在调用 func 前后打印了一些信息。然后,my_decorator 返回 wrapper 函数。

使用 @my_decorator 语法糖,我们可以将 say_hello 函数传递给 my_decorator 装饰器。这实际上是将 say_hello 函数作为参数传递给 my_decorator,并将返回的 wrapper 函数赋值回 say_hello

如果你想要装饰器能够接受参数,你需要再嵌套一层函数:

def repeat(num_times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(num_times):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator

@repeat(num_times=3)
def greet(name):
    print(f"Hello {name}")

greet("Alice")

在这个例子中,repeat 是一个接受参数的装饰器工厂函数,它返回实际的装饰器 decoratordecorator 接受一个函数 func 并返回 wrapper 函数。wrapper 函数会重复调用 func 几次,这里的次数由 num_times 参数决定。

运行这段代码,输出将会是:

Hello Alice
Hello Alice
Hello Alice

这就是Python装饰器的基本写法。通过使用装饰器,你可以轻松地为函数添加额外的功能,而无需修改函数本身的代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI