zoukankan      html  css  js  c++  java
  • python--装饰器2--理解


    一、装饰无参函数
    ①、原函数target为无参函数
    ②、装饰函数的内置函数也必须要是无参函数
    ③、运行原理相当于:target()=decorator(target)()---->最后的()相当于执行内部函数,所以target()相当于执行了内部函数dec2();
    1
    #装饰器的正确格式 2 def decorator(func): 3 def dec2(): 4 func(); 5 print('this is decorator'); 6 return dec2;------------->装饰器返回一个函数(而函数是可调用的对象) 7 8 @decorator 9 def target(): 10 print('this is target') 11 target();------->此处使用正确的调用函数方法,正常运行。
    二、装饰有参数的函数
    ①、原函数需要传入若干个参数
    ②、内置函数也要传入若干个参数
    ③、运行原理相当于:dayin(list2)=dec(dayin)(list2) ----->最后一个()相当于执行内置函数,所以dayin(list2)相当于执行了内部函数dec02(list2)

    1
    #装饰有参数的函数 2 def dec(func): 3 def dec02(*args,**kwargs):------>(*args,**kwargs)相当于可以接受任意类型、个数的参数 4 print('开始'); 5 func(*args,**kwargs); 6 return dec02; 7 8 @dec 9 def dayin(info): 10 print(info); 11 list2=[5,6,7,4]; 12 13 dayin(list2);
    三、带参数的装饰器
    #
    带参数的装饰器 def log(test):------------->在原来的基础上多加一层 def dec(func): def dec02(*args, **kwargs): print('开始',test); func(*args, **kwargs); return dec02; return dec; @log('哈哈') def dayin(int1,int2): print(int1+int2); dayin(4,5);
  • 相关阅读:
    HDU 5714
    C++ 中的名称冲突之 "y1"
    FFT 模板
    Modular Query
    找礼物(find)(模拟)
    水流(water)(BFS)(DFS)
    单词接龙(dragon)(BFS)
    细菌(disease) (位运算)(状态压缩)
    Diamond Collector (动态规划)
    超级素数(sprime) (BFS)
  • 原文地址:https://www.cnblogs.com/shenyexiaoqingxin/p/10435523.html
Copyright © 2011-2022 走看看