闭包:
闭包是python中的一个很实用的写法,可以使得用户在函数中调用该函数外的函数的变量,使得该变量常驻于内存中。
闭包函数:
输入是函数,输出也是一个函数。
装饰器的写法是python闭包的语法糖。
面试中经常面试到的调用结果题目:
# ---encoding:utf-8---
# @Author : CBAiotAigc
# @Email :1050100468@qq.com
# @Site :
# @File : 两个装饰器.py
# @Project : PythonUtils
# @Software: PyCharm
def wrapper1(func):print("set wrapper1")def inner_wrapper1(*args, **kwargs):print("进入inner_wrapper1")ret = func(*args, **kwargs)print("离开inner_wrapper1")return retreturn inner_wrapper1def wrapper2(func):print("set wrapper2")def inner_wrapper2(*args, **kwargs):print("进入inner_wrapper2")ret = func(*args, **kwargs)print("离开inner_wrapper2")return retreturn inner_wrapper2@wrapper1
@wrapper2
def func():print("func 函数调用")if __name__ == '__main__':func()
装饰器在第一次调用被装饰函数时进行增强
- 增强时机? 在第一次调用之前
- 增强次数?只增强一次
上面代码的调用逻辑分析:
func = wrapper2(func)
func = wrapper1(func)func()