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_闭包函数+装饰器的主要内容,如果未能解决你的问题,请参考以下文章