zoukankan      html  css  js  c++  java
  • 闭包、装饰器

    闭包:

      如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).

    def outer():
         x = 1
         def inner(): #inner()为闭包,引用非本级非全局变量x
             print (x) 
      
         return inner
    

    装饰器:

      本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。

     1,开放封闭原则:

    • 对扩展是开放的
    •    对修改是封闭的

    2,语法糖

      要将语法糖放在被装饰的函数正上方,中间可以空,不建议空。

    # 标准版装饰器
    def warpper(f):
        def inner(*args,**kwargs):
            print("被装饰函数执行前")
            ret = f(*args,**kwargs)
            print("被装饰函数执行后")
            return ret
        return inner
    
    @warpper
    def func(*args,**kwargs):
        print(f"被装饰的{args,kwargs}")
        return "我是func函数"
    
    @warpper
    def index(*args,**kwargs):
        print(11111)
    
    print(func(1,2,3,4,5,6,7,8,a=1))
    

      

     

  • 相关阅读:
    神经网络 初步
    SVM整理
    碎碎念
    random note
    2015阿里实习内推一轮被拒
    django开发框架-view & template
    一点思考
    dive into python 读笔(3)
    dive into python 读笔(2)
    dive into python 读笔(1)
  • 原文地址:https://www.cnblogs.com/zzzhao/p/11408352.html
Copyright © 2011-2022 走看看