day12.1_闭包函数+装饰器

Posted smart1san

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day12.1_闭包函数+装饰器相关的知识,希望对你有一定的参考价值。

一、闭包函数

闭包的定义:①该函数是一个内部函数

                   ②该函数包含对外部的作用域(非全局作用域)中名字的引用

1. 为函数体传值的方式

1.1 使用参数形式

1.2 包给函数

def outter(x):
    def inner():
        print(x)
    return inner       #函数当返回值(对象)
f=outter(1)            #相当于赋值
f()

二、装饰器

1.装饰器是什么?

①为被装饰器对象添加额外的功能  ② 可以当成工具,函数就具备某一功能的工具

装饰器本省可以是任意可调用的对象,被装饰的对象也可以是任意可调用的对象

2.为什么需要装饰器?

软件一经发布之后,需要进行版本的更新迭代。软件的维护需遵循开放封闭原则,即对日后修改源代码是封闭的,对扩展功能的是开放的

装饰器的实现须遵循两大原则:

①不修改被装饰对象的源代码

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

总的来说,装饰器就是在遵循①②的前提下为被装饰对象添加新功能

3.装饰器用来干什么?

 1 import time
 2 def index():
 3     print("welcome to index")
 4     time.sleep(3)
 5 def timmer(func):
 6     #func=最原始的index
 7     def wrapper():
 8         start=time.time()
 9         func()
10         stop=time.time()
11         print("spend time is %s"%(stop-start))
12     return wrapper
13 index=timmer(index)    #index=wrappera函数的内存地址
14 index()

 

以上是关于day12.1_闭包函数+装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Day 19 函数之闭包装饰器

Python基础day-8[装饰器补充,迭代器(未完)]

CSIC_716_20191112闭包函数和装饰器

day10-闭包函数函数装饰器

python 函数名 闭包 装饰器 day13

Python开发基础-Day7-闭包函数和装饰器基础