一、闭包函数
闭包的定义:①该函数是一个内部函数
②该函数包含对外部的作用域(非全局作用域)中名字的引用
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()
原文地址:https://www.cnblogs.com/Smart1san/p/9170709.html
时间: 2024-10-07 23:41:33