闭包函数: 1、定义在函数内部的函数 2、包含对外部作用域而非全局作用域的引用特点: 1、自带作用域 2、延迟计算(取到内存地址,加括号执行) def 外部函数(func): def 内部函数(*args,**kwargs): pass return 内部函数 f=外部函数(func) print(f.__closure__) print(f.__closure__[0].cell_contents) 优点: 1 自带作用域 2 惰性延迟 1、开放封闭原则,对扩展是开房的,对修改是封闭的2、装饰器:装饰器本质是可以任意调用对象,被装饰的对象也可以是任意可调用对象 功能:在不修改被装饰对象源代码以及调用方式的前提下,对其添加新功能 原则: 1、不修改源代码 2、不修改调用方式 目标:添加新功能 装饰器 1 开放封闭原则:对扩展开放,对修改(修改源代码和调用方式)是封闭的 2 什么是装饰器:装饰器本质是任意可调用对象,被装饰器对象也可以是任意可调用对象 装饰器遵循的原则:不修改被装饰对象的源代码和调用方式 3 定义装饰器 def 外部函数(func): def 内部函数(*args,**kwargs): pass return 内部函数 4 装饰器的语法:@ 1.卸载被装饰对象的正上方单独一行 2.可叠加多个,执行顺序是自下而上 定义阶段外部函数的执行顺序是自下而上 调用阶段内部函数的执行顺序是自上而下 @timmer #index=timmer(index) def index(): pass
时间: 2024-11-08 21:06:11