首页 > 其他分享 >装饰器通用写法

装饰器通用写法

时间:2023-06-10 14:22:51浏览次数:32  
标签:wrapper2 外挂 通用 inner print return 写法 装饰 def

'''
一、装饰器通用写法
def wrapper_out(params)
print(params)
def wrapper(func):
def inner(*args,**kwargs):
print('打开外挂') # 执行前操作
res = func(*args,**kwargs)
print('关闭外挂') # 执行后操作
return res
return inner
return wrapper

二、装饰器嵌套
def wrapper1(func):
def inner(*args,**kwargs):
print('wrapper1打开外挂') # 执行前操作 1
res = func(*args,**kwargs)
print('wrapper1关闭外挂') # 执行后操作 5
return res
return inner

def wrapper2(func):
def inner(*args,**kwargs):
print('wrapper2打开外挂') # 执行前操作 2
res = func(*args,**kwargs)
print('wrapper2关闭外挂') # 执行后操作 4
return res
return inner

@wrapper1 # target = wrapper1(wrapper2.inner)
@wrapper2 # target = wrapper2(target) ---> wrapper2.inner
def target():
print('target') 3

执行顺序: 1,2,3,4,5
'''

def wrapper(game):
def inner():
print('打开外挂')
game()
print(wrapper.__name__)
print('关闭外挂')
return inner

@wrapper
def play_dnf():
print('德玛西亚!!!')

play_dnf()

标签:wrapper2,外挂,通用,inner,print,return,写法,装饰,def
From: https://www.cnblogs.com/xuetushiyongqi/p/17471213.html

相关文章

  • redis通用命令及其五种基本数据结构
    Redis通用命令介绍:KEYS:查看符合模版的所有key,DEL:删除一个指定的KEYEXISTS:判断KEY是否存在EXPIRE:给一个key设置有效期,有效期到期时该KEY会自动删除TTL:查看一个key到剩余有效期示例:127.0.0.1:6379>existstest_key(integer)1127.0.0.1:6379>expire......
  • Python根据字幕文件自动给视频添加字幕(通用版)
    功能描述:根据给定的字幕文件中的字幕信息,自动给视频添加字幕,运行程序后输入要添加字幕的视频文件和对应的字幕文件路径即可。实际使用时不需要对程序做任何修改,只需要根据实际的视频内容来修改字幕文件就可以,自动把字幕文字添加到视频下方并居中显示。字幕文件格式:扩展库:pipinstal......
  • golang实现设计模式之装饰器模式-优缺点,适用场景
    装饰器模式是一种结构型设计模式,简单概括就是:不改变先有对象结构下,动态给对象增加一些职责。装饰器模式通过组合方式实现,与继承的异同:使用继承方式,具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。使用组合方式,创建装饰对象来装饰真实对象,原对象功能不变,另外扩展。......
  • python装饰器
    '''1将outer定义代码块读入内存中,没有调用outer()2解释装饰器的作用2.1立即执行作为装饰器的函数outer(被装饰的函数名)2.2被装饰的函数名f1作为参数被传递给装饰函数outer(f1)3解释2装饰器的注意事项3.1装饰函数无论有无()都会执行3.2装饰函数里的参......
  • python-类作为装饰器的各种情况
    1.装饰器没有参数:这时foo不再是之前的函数名而是类ClassDeco的一个对象,并且foo.func=foo,对象名()会触发类ClassDeco的__call__方法:classClassDeco:def__init__(self,func):self.func=funcdef__call__(self,*args,**kwargs):print(f'Runni......
  • 山东烟台售楼部小区装饰仿铜不锈钢C形发光景观雕塑厂家
    山东烟台售楼部小区装饰仿铜不锈钢C形发光景观雕塑厂家仿铜不锈钢C形发光景观雕塑一把手形的不锈钢餐叉在优雅的形式中表现的是一种对现代生活的描述,但在深层传达的却是文明冲突的隐喻和象征。园林异形拱门是一件景抽象雕塑,景观不锈钢雕塑的底座设计与景观不锈钢雕塑同等重要,因为底......
  • vue+elementUI 搜索栏公共组件封装,封装多搜索条件通用组件,超实用
    1、新建BaseSearch.vue文件<!--*名称:弹窗的搜索条件组件*功能:methods1.点击搜索的方法:@search2.搜索条件props:formItemList--><template><divclass="dialog-search"><el-form:inline="true"ref="......
  • javaScript通用数据类型校验_1
    /***取得字符串的字节长度*/1.functionstrlen(str)2.{3.vari;4.varlen;5.6.len=0;7.for(i=0;i<str.length;i++)8.{9.if(str.charCodeAt(i)>255)len+=2;elselen++;10.}11......
  • 【Python查漏补缺(一)】闭包和装饰器
    闭包的构成条件:在函数嵌套(函数里面再定义函数)的前提下内部函数使用了外部函数的变量(还包括外部函数的参数)外部函数返回了内部函数简单闭包deffun_out(num1):  #定义外部函数  deffun_inner(num2):    #内部函数使用了外部函数的变量  ......
  • javaScript通用数据类型校验_2
    /*要求:一、电话号码由数字、"("、")"和"-"构成二、电话号码为3到8位三、如果电话号码中包含有区号,那么区号为三位或四位四、区号用"("、")"或"-"和其他部分隔开用途:检查输入的电话号码格式是否正确输入:strPhone:字符串返回:如果通过验证返回true,否......