Bootstrap

python 闭包与装饰器的关系_Python闭包与装饰器原理及实例解析

一、闭包

闭包相当于函数中,嵌套另一个函数,并返回。代码如下:

def func(name): # 定义外层函数

def inner_func(age): # 内层函数

print('name: ', name, ', age: ', age)

return inner_func # 注意此处要返回,才能体现闭包

bb = func('jayson') # 将字符串传给func函数,返回inner_func并赋值给变量

bb(28) # 通过变量调用func函数,传入参数,从而完成闭包

>>

name: jayson , age: 28

二、装饰器

装饰器:把函数test当成变量传入装饰函数deco --> 执行了装饰操作后,变量传回给了函数test()。比如装饰器效果是test = test-1,test函数经过deco装饰后,调用test其实执行的是 test = test-1。

1、装饰器是利用闭包原理,区别是装饰器在闭包中传入的参数是函数,而不是变量。

注:其实在装饰器中,函数即变量

def deco(func): # 传入func函数。

print('decoration')

return func

def test():

print('test_func')

test = deco(test) # 对函数进行装饰。执行了deco函数,并将返回值赋值给test

>>

;