博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
27 Python 装饰器
阅读量:5072 次
发布时间:2019-06-12

本文共 1512 字,大约阅读时间需要 5 分钟。

一. 我们先写一个玩游戏的步骤

# def play():#     print("双击LOL")#     print("选择狂战士")#     print("进草丛")#     print("崩山击","十字斩")
我们想添加   1.开挂   2.关闭外挂   目标函数前和后插入一段新代码  不改变原来代码
# def wrapper(fn):#     def inner():#         print("开挂")#         fn()#         print("关闭外挂")#     return inner## play = wrapper(play)## play()

通用装饰器的语法:

def wrapper(fn):    def inner(*args, **kwargs): # 聚合        """在目标函数之前的内容"""        ret = fn(*arg, **kwargs) # 打散        """在目标函数之后的内容"""        return ret    return inner@wrapperdef func():    passfunc()

 

同一个函数被多个装饰器装饰

def wrapper1(fn):    def inner(*args, **kwargs):        print("1")        ret = fn(*args, **kwargs)        print("2")        return ret    return innerdef wrapper2(fn):    def inner(*args, **kwargs):        print("3")        ret = fn(*args, **kwargs)        print("4")        return ret    return innerdef wrapper3(fn):    def inner(*args, **kwargs):        print("5")        ret = fn(*args, **kwargs)        print("6")        return ret    return inner# 顺序 1 2 3  func 3 2 1@wrapper1@wrapper2@wrapper3def func():    print("装饰器不难  滑稽脸)")func()  # 1 3 5 装饰器不难  滑稽脸 6 4 2

带参数的装饰器

def wrapper_out(参数):        def wrapper(fn):            def inner(*args, **kwargs): # 聚合                """在目标函数之前的内容"""                ret = fn(*arg, **kwargs) # 打散                """在目标函数之后的内容"""                return ret            return inner        return wrapper@wrapper_out(实参)  # 执行的时候. 先执行函数的调用然后使用返回值和前面的@组合成装饰器语法糖def func():    pass

 

转载于:https://www.cnblogs.com/a2534786642/p/10121413.html

你可能感兴趣的文章
Js_图片轮换
查看>>
C#语句,console,C#//,/**/
查看>>
结对项目 记事本
查看>>
第二次寒假作业
查看>>
剑指offer 面试58题
查看>>
静态HashMap初始化
查看>>
codevs1792 分解质因数
查看>>
小程序 ~ 开源项目库汇总
查看>>
矩阵快速幂HDU6030
查看>>
用Windows 2003配置邮件服务器
查看>>
nuxt移动端适配
查看>>
ajax报告申请添加
查看>>
MSSQL2005不能用IP访问
查看>>
AngularJS 框架
查看>>
团队冲刺第八天
查看>>
解决vi编辑器不能使用方向键和退格键
查看>>
实验一:用机器指令和汇编指令编程
查看>>
算法系列15天速成——第十五天 图【下】(大结局)
查看>>
html 让一行文字居中
查看>>
#include<iostream>与#include<iostream.h>的区别
查看>>