当前位置: 首页 > 科技观察

你可能不知道Python装饰器

时间:2023-03-14 19:19:09 科技观察

今天才发现装饰器的另一种用法,先上代码:):return2@data_itemdeffoo3():return3defmax_item():result=max(i()foriindata_list)returnresultif__name__=='__main__':item=max_item()print(item)代码很简单,一开始定义三个foo函数,每个foo函数输出不同的数字,由装饰器data_item修改,最后通过max_item函数,执行一系列逻辑得到结果。这里有一点很容易被忽略,就是装饰器实际上是在执行max_item()之前执行的。所以,如果你打印data_list你会发现它有价值。[,,]即list中已经有3个装饰器装饰的函数,然后这3个函数在max(i()foriindata_list)的i()阶段执行,而我们得到的结果是(1,2,3),然后最后取他们的最大值,也就是3。会用到什么场景?一般情况下,对于传入一个值,然后多次处理方案,在选择最佳方案时,可以考虑使用这种方式。emmm,这个装饰器还挺有意思的。