@修饰符

话不多说先上代码,简单粗暴解释用法

def a(fun):
    fun()


@a
def fn():
    print(12)

执行以上代码,得到输出

12

这里解释了@解释器的用法,即将函数作为修饰器函数的参数传入。

尝试了一下使用两个修饰器的情况,使用方法如下

def a(fun):
    print('a')
    fun()
    return fun


def b(fun):
    print('b')
    fun()


@b
@a
def fn():
    print(12)

输出为

a
12
b
12

尝试到这里,会很自然想到为什么需要@修饰符的存在,因为本身 python 的函数就可以将函数作为参数传入,比如将第一个例子改为如下代码:

def a(fun):
    fun()


def fn():
    print(12)


a(fn)

查了一些资料,原因应该和 aop 的思想有关,没有深究,埋个坑,有时间了深挖。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 所有权修饰符 Object-C中为了处理对象,可将变量类型定义为id类型或各种对象类型。 所谓对象类型就是指向NS...
    fou7阅读 1,114评论 1 4
  • Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放...
    代码人生sl阅读 316评论 0 1
  • 1. 过滤器 一般用于将后端传给前端的数据中满足用户条件的内容进行过滤的功能 我们可以手动实现自己的过滤器,也可以...
    Metallica_d8b1阅读 418评论 0 0
  • 没有功劳也有苦劳,这是我以前在单位上班的时候,经常听到有人说的一句话。当时觉得有些人能力虽然不足,但是态度确实好,...
    鄢中堡阅读 255评论 0 0
  • 以下金句选自意大利作家 安东尼奥 塔布齐《安魂曲》: 1、好吧,我说,我觉得我必须尝一尝这款“绿窗之梦”,您确实激...
    游戏的安德鲁阅读 393评论 0 7