装饰器
闭包
在计算机科学中,闭包(closure),又称词法闭包(lexical clourse)或者函数闭包,是引用了自有变量的函数。这个引用的自由变量的函数和这个函数一同存在,即使已经离开了创造他的环境也不例外。
闭包就是引用了自有变量(非局部变量)的函数,这个函数保存了执行的上下文,可以脱离原本的作用域独立存在。
def printMSG():
msg = “MSG”
#printer 函数就为一个闭包,引用了自有变量msg,保存了上下文msg
def printer():
print(msg)
msg="New MSG"
return printer
#获得一个闭包
clousre = printMSG()
clourse()
装饰器
@符号:只是将函数传入装饰器的函数,并无神奇之处。
@functools.warps(func),这是python的装饰器,它能将原函数的元信息拷贝靠装饰器里面func函数中,包括docstring、name、参数列表等。
功能:修改其他函数的功能
带参数的装饰器
装饰器允许传入参数,一个携带参数的装饰器将有三层函数。
原理就是套一层函数调用,在原有闭包的前提下,再加一层调用。