zoukankan      html  css  js  c++  java
  • python 装饰器

     1 def func(func1):
     2     def add_func(a,b):
     3         print('lalala')
     4         return func1(a,b)
     5     return add_func
     6 
     7 
     8 def func1(x,y):
     9     print(x+y)
    10 
    11 
    12 func(func1)(1,2)
    13 
    14 #上面的函数就等于
    15 #@func
    16 #def func1(x,y):
    17 #     print(x+y)
    18 #func1(1,2)

    装饰器函数默认第一个参数是函数名

    里面需要增加功能的函数的参数    是和传入进来函数的参数是一样的

    一定要一 一对应  不然会报错

    然后装饰器带参数的

     1 #装饰器函数带参数
     2 #出去玩,不出去玩
     3 def arg_func(arg):
     4     def _func(func):
     5         def _func1():
     6             if arg == 'good':
     7                 print('出去玩')
     8             if arg == 'bad':
     9                 print('不出去玩')
    10             return func()
    11         return _func1
    12     return _func
    13 #arg_func 装饰器函数的参数接收函数,因为装饰器函数只能是接收一个函数作为参数
    14 #arg_func -> _func  接收我们装饰器函数的参数
    15 #_func -> _func1 闭包函数 添加功能
    16 #_func1 -> func 执行添加的功能,执行被装饰的函数 
    17 
    18 @arg_func('bad')
    19 def func():
    20     print('bad day')
    21 
    22 @arg_func('good')
    23 def func1():
    24     print('good day')
    25 
    26 func()
    27 func1()
       生命不息
       希望不止
       将来的你
       一定会感谢现在拼命的自己
       fighting!!!
  • 相关阅读:
    软件工程第一次作业
    软工热身作业
    OO第四单元
    面向对象——规格总结
    OO电梯作业总结
    JAVA实现表达式求导运算的分析总结
    提问回顾与个人总结
    Flutter的环境配置以及一些常见问题
    软件案例分析
    软件工程结对作业
  • 原文地址:https://www.cnblogs.com/lonelyshy/p/9655761.html
Copyright © 2011-2022 走看看