首页 > 开发 > Python > 正文

python 闭包和装饰器的使用

2017-07-12 18:22:46  来源:慕课网
函数也是对象

函数本身也是一个对象 , 可以被其它的变量进行引用 , 作为对象返回

图片描述

闭包

在函数里面再定义一个函数, 里面的函数用到外面函数的变量, 这个函数及用到的变量称为闭包

图片描述

里层函数可以轻松访问外层函数的变量

图片描述

当函数重名时

函数本质上也是一个对象,可以被任意指向, 如果有多处指向,后面指向的总是覆盖前面指向的

图片描述

开放封闭原则

开放 : 对外可以扩展开发
封闭: 已实现的代码不修改

装饰器的本质

装饰器实现了开放封闭的代码原则, 原有的代码不发生修改又能增加新的功能 ,从本质上讲是将函数作为对象进行参数传递,并且作为对象进行返回

图片描述

使用语法糖来简化代码

使用@装修函数 的语法装饰函数 , 原函数的代码 和调用不发生变化
图片描述

多次装饰

如下, 第一次装饰时函数并不没有执行,到第二次装饰里将第一次添加的功能添加将执行,所以被装饰函数执行了一次,简化言之:第二次装饰时 inner = func

图片描述

不定参数的装饰器

图片描述

带有返回值的装饰器

图片描述

装饰器带有参数

带有参数的装饰并不会直接传入原有的函数对象,而是返回一个被包裹的装饰器
图片描述