装饰器

一  函数对象

函数时第一类对象:指的是函数可以当做数据传递

①可以被引用

②可以被当做函数的参数传入

③ 可以当做函数的返回值

④可以当做容器的元素

 二  函数嵌套

1、函数的嵌套调用

2、 函数的嵌套定义

三 名称空间与作用域

1、名称空间指的是: 存放名字与值绑定关系的地方

1)内置名称空间:python解释器内置的名字。max,len等(python解释器启动就有)

2)全局名称空间 :文件级别定义的名字  (执行python文件时生效)

3)局部名称空间: 函数内部定义的名字(在函数调用时生效,调用结束后失效)

 加载顺序: 内置--全局--局部名称空间

访问名字顺序:  局部--全局--内置

 

2、全局作用域(全局范围): 内置名称空间与全局名称空间的名字,全局存活,全局有效,globals()

     局部作用域(局部范围):  局部名称空间的名字,临时存活,临时有效  locals()

 3、打破函数层级限制来调用函数

4、函数的作用关系在函数定义阶段就已经固定了,与调用无关

 

四 闭包函数

 定义在函数内部的函数,该函数的函数体代码包含对外部作用域(而不是对全局作用域)名字的引用,通常将闭包函数用return返回,可以在任意位置使用

 

五 装饰器

1、 开放封闭原则: 对扩展开放,对修改封闭

2、装饰器: 装饰他人的,器指的是任意可调用对象,现在的场景--函数

3 、原则:①不修改被装饰对象的源代码

                ②不修改被装饰对象的调用方式

装饰器的目的:在遵循1,2,的前提下为被装饰的对象添加新功能

源代码

 新功能:统计函数的执行时间

 

 4、装饰器的语法

问题一: 假如函数index有返回值的问题

 

问题二; index()函数有参数的情况下

 5、以上可以看做是无参装饰器,下面来有参装饰器

源代码:

为index实现授权功能

修订版本,有参装饰器

增加了engine变量

6、并列多个装饰器

 7、给函数加上注释

 

posted @ 2017-12-19 13:42  于广威  阅读(152)  评论(0)    收藏  举报