主要记录下遇到了装饰器,然后记录一下,毕竟装饰器太多了,还有很多自定义的。
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
本文介绍了Python装饰器的基本概念和使用,通过示例展示了如何创建装饰器以增强函数功能,如记录执行时间和日志。同时,讨论了Python中如何使用@abstractmethod来定义抽象基类,实现类似Java接口的功能,强制子类实现特定方法。
7011

被折叠的 条评论
为什么被折叠?



