python 装饰器用法(复习防忘)

装饰器用法

Python装饰器是一种特殊的函数,用于修改或增强其他函数的功能。装饰器函数本身接收一个函数作为参数,并返回一个新的函数,新函数通常用于包装原始函数。

装饰器常用于以下情况:

1. 记录函数的执行时间或日志信息;
2. 给函数添加缓存功能,以避免重复计算;
3. 给函数添加认证、授权等功能;
4. 修改函数的返回值或异常处理;
5. 以更简洁的方式修改函数的行为等。

装饰器的语法格式如下:

@decorator_function
def my_function():
    pass

其中,`decorator_function` 是装饰器函数,`my_function` 是待装饰的函数。使用装饰器时,会将待装饰的函数作为参数传递给装饰器函数,并将装饰器函数的返回值赋值给原始函数。

例如,下面是一个用于计算函数执行时间的装饰器:

import time

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

该装饰器函数接收一个函数作为参数,返回一个新的函数。新函数包装了原始函数,用于计算函数执行时间并输出结果。

使用装饰器时,只需要在待装饰的函数前添加 `@timer` 即可:

@timer
def my_function():
    # do something

这样,在每次调用 `my_function()` 时,都会自动计算并输出执行时间。

就是说,上边程序在运行时,不是运行的my_function(),而是运行的wrapper函数

PS:由ChatGPT生成

装饰器更详细用法

User

@classmethod用法

在Python中,`@classmethod` 是一个装饰器,用于定义类方法。类方法是与类相关联而不是与实例相关联的方法。使用 `@classmethod` 装饰器,可以将一个方法声明为类方法,使得它可以直接通过类调用,而无需创建类的实例。以下是一个简单的示例,说明了`@classmethod`的用法:

class MyClass:
    class_variable = "I am a class variable"

    def __init__(self, instance_variable):
        self.instance_variable = instance_variable

    @classmethod
    def class_method(cls):
        print("This is a class method")
        print(f"Accessing class variable: {cls.class_variable}")

# 使用类方法,无需创建实例
MyClass.class_method()

在上面的例子中,`class_method` 是一个类方法,通过 `@classmethod` 装饰器进行了声明。它可以通过类直接调用,而无需创建类的实例。类方法的第一个参数通常被命名为 `cls`,用于表示类本身。

值得注意的是,类方法可以访问类变量,但不能直接访问实例变量,因为它没有实例的引用。如果需要访问实例变量,通常会选择使用普通的实例方法。

装饰器更详细用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值