本文目录
  1. 1.垃圾回收机制
  2. 2.闭包三要素
  3. 1.内置装饰器
  4. 2.自定义装饰器
  5. 2.1 通用装饰器
  6. 2.2 无参数无返回值
  7. 2.3有参数无返回值
  8. 2.4 无参数有返回值
  9. 2.5 有参数有返回值

Python 闭包与装饰器

理解闭包的状态保存方式,并使用装饰器扩展函数能力。

1.垃圾回收机制

#1.什么是垃圾
# garbage collection -> gc
#没有用的内存

#2.回收条件是什么
#如果一个变量不可访达,就会被回收(标记清除法)

2.闭包三要素

闭包的核心思想:绕过垃圾回收机制的一种高级编程思想

闭包的作用:延伸变量作用域的范围

有嵌套 -> 外函数嵌套内函数

有引用 -> 内函数要引用外函数的变量

有返回值 -> 返回值为内函数的名字

#global 在函数内部访问全局变量
#nonlocal 在函数内部修改外部函数的变量
def count():
    count = 0
    def add():
        nonlocal count
        count += 1
        print(f"当前count值为{count}")
    return add

1.内置装饰器

python中自带的装饰器,直接调用就可以

@classmethod 类装饰器

@staticmethod 静态装饰器

2.自定义装饰器

2.1 通用装饰器

def out(fn):
    def inner(*args,**kwargs)
        print("开始执行")
        res=fn
        return res
    return inner

2.2 无参数无返回值

def out(fn):
    def inner()
        print("开始执行")
        fn
    return inner

2.3有参数无返回值

def out(fn):
    def inner(a,b)
        print("开始执行")
        fn(a,b)
    return inner

2.4 无参数有返回值

def out(fn):
    def inner()
        print("开始执行")
        res=fn()
        return res
    return inner

2.5 有参数有返回值

def out(fn):
    def inner(a,b)
        print("开始执行")
        res=fn(a,b)
        return res
    return inner