西安双语网站建设,nanopi neo做网站,网站开发前端要学什么软件,青岛建设项目环评公示网站装饰器#xff0c;英文名字decorator。
我们开发Python代码的时候#xff0c;经常碰到装饰器。 通常被装饰后的函数#xff0c;会在原来的函数的基础上#xff0c;增加一些功能。 通常装饰器本事也是一个函数#xff0c;那么装饰器是怎么装饰另外一个函数的呢#xff1f…
装饰器英文名字decorator。
我们开发Python代码的时候经常碰到装饰器。 通常被装饰后的函数会在原来的函数的基础上增加一些功能。 通常装饰器本事也是一个函数那么装饰器是怎么装饰另外一个函数的呢
假设你进入一家公司领导要求你在老代码的基础上继续开发。
import time
def getXXXTime():return time.strftime(%Y_%m_%d %H:%M:%S,time.localtime()) import time# 定义一个装饰器函数
def sayLocal(func):def inner():ret func()return f当地时间: {ret}return innerdef getXXXTime():return time.strftime(%Y_%m_%d %H:%M:%S,time.localtime())# 装饰getXXXTime()
getXXXTime sayLocal(getXXXTime)print(getXXXTime()) 我们再看下之前的装饰器的通用模板
def wrapper(f): # 装饰器wrapperdef inner(*args, **kwargs): 在装饰前要做的事情 ret f(*args, **kwargs) # 被装饰的函数在装饰后要做的事情return retreturn innerwrapper # 装饰器函数名
def func(a, b): # 被装饰的函数 import time# 定义一个装饰器函数
def sayLocal(func):def inner():ret func()return f当地时间: {ret}return innersayLocal
def getXXXTime():return time.strftime(%Y_%m_%d %H:%M:%S,time.localtime())# 装饰getXXXTime()
# getXXXTime sayLocal(getXXXTime)print(getXXXTime())
sayLocal函数是一个装饰器它装饰了参数函数的行为。
以sayLocal开头后面接装饰器函数的这种写法是一种语法糖也就是便捷的写法。 装饰器经常被用在库和框架中给别的开发者使用。
这些库的开发者预料到 使用者 开发的函数可能需要 一些增强的功能。
但是 这些库的开发者 没法去改使用者的代码 就可以把这些增强的部分做在 装饰器函数中。
这样使用者只需要在他们的函数前面上xxx 就使用了这些增强的功能了。 开放封闭原则
1多拓展是开放的
2对修改是封闭的
目的是维护代码的稳定性这个就是装饰器存在的意义。