什么是闭包
所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
def make_avg():
data = list()
def add_number(value):
data.append(value)
total=sum(data)
return total/len(data)
return add_number
myavg = make_avg()
print(myavg(100))
print(myavg(200))
通俗的讲:就是函数a的内部函数b,被函数a外部的一个变量引用的时候,就创建了一个闭包。
装饰器
装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数。
def makeBold(func):
def inner():
return '<b>'+func()+'</b>'
return inner
def makeIta(func):
def inner():
return '<i>' +func()+'</i>'
return inner
@makeIta
@makeBold
def f():
retur 'Hello world!'
print(f())
输出结果:<i><b>Hello world!</b></i>