闭包:
闭包是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 ret
return inner_wrapper1
def wrapper2(func):
print("set wrapper2")
def inner_wrapper2(*args, **kwargs):
print("进入inner_wrapper2")
ret = func(*args, **kwargs)
print("离开inner_wrapper2")
return ret
return inner_wrapper2
@wrapper1
@wrapper2
def func():
print("func 函数调用")
if __name__ == '__main__':
func()
装饰器在第一次调用被装饰函数时进行增强
- 增强时机? 在第一次调用之前
- 增强次数?只增强一次
上面代码的调用逻辑分析:
func = wrapper2(func)
func = wrapper1(func)
func()