闭包、装饰器

闭包:

闭包的本质就是函数嵌套,就是在函数里面定义函数,

内部函数可以引用外部函数的参数和变量

参数和变量不会被垃圾回收机制给回收

闭包的用途:可以存循环的索引值、做私有变量计数器

什么是闭包:

# 定义一个函数

deftest(number):

# 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包

deftest_in(number_in):

print("in test_in 函数, number_in is %d"% number_in)

returnnumber+number_in

# 其实这里返回的就是闭包的结果

returntest_in

# 给test函数赋值,这个20就是给参数number、

ret = test(20)

# 注意这里的100其实给参数number_in

print(ret(100))

#注 意这里的200其实给参数number_in

print(ret(200))

运行结果:

intest_in 函数, number_inis100

120

intest_in 函数, number_inis200

220

注意点:

由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存

装饰器:

装饰器就是用于拓展函数功能的一种函数,它的特殊之处,在于它的返回值也是一个函数,使用装饰器的好处就是,在不用更改原函数代码的前提下,给函数增加新的功能

你可能感兴趣的:(闭包、装饰器)