Python之装饰器

本文介绍了Python装饰器的基本概念和使用,通过示例展示了如何创建装饰器以增强函数功能,如记录执行时间和日志。同时,讨论了Python中如何使用@abstractmethod来定义抽象基类,实现类似Java接口的功能,强制子类实现特定方法。
摘要由CSDN通过智能技术生成

主要记录下遇到了装饰器,然后记录一下,毕竟装饰器太多了,还有很多自定义的。

1、定义

python的装饰器@的作用是为了给现有的函数增加额外的功能,比如

def log(func):
    print("程序开始了")
    func()
    print("程序结束了")

@log
def add1to1000():
    sumv = 0
    for i in range(10001):
        sumv += i
    print(f"sum的值为:{sumv}")

add1to1000()

# 输出:
#	程序开始了
#	sum的值为:50005000
#	程序结束了

如果将log的func()上下修改成时间戳,那么@log就变成调用add1to1000还会输出耗时的功能装饰器。

当然上面的代码还是会有一些问题,具体详见Python函数修饰符@的详细教程

当读到@装饰符,把下一行的函数或者类作为@后边的函数的参数,执行被装饰的函数。显然装饰器就是将整个被修饰的函数在外层装饰一层功能。

2、内置的@abstractmethod

Python中没有类似java中Interface关键词来定义接口类,而是通过@abstractmethod修饰器来实现。

class ABSClass:
    @abstractmethod
    def __init__(self):
        raise NotImplementedError

    @abstractmethod
    def train(self):
        raise NotImplementedError

    @abstractmethod
    def eval(self):
        raise NotImplementedError
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一个对称矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值