从实际应用理解闭包 装饰器

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

装饰器:比如要给不同的基础平台部门增加验证权限/引入日志/函数执行时间统计时要用到装饰器 因为函数尊重开放封闭原则(已实现的代码时不允许被修改的)

理解python装饰器 #想要理解Python中的装饰器,不得不先理解闭包(closure)这一概念。
# print_msg是外围函数#在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包
def print_msg():
    msg = "I'm closure"

    # printer是嵌套函数
    def printer():
        print(msg)

    return printer
msg是一个局部变量,在print_msg函数执行之后应该就不会存在了。但是嵌套函数引用了这个变量,
将这个局部变量封闭在了嵌套函数中,这样就形成了一个闭包。
结合这个例子再看维基百科的解释,就清晰明了多了。闭包就是引用了自有变量的函数,
这个函数保存了执行的上下文,可以脱离原本的作用域独立存在。
下面再来看看装饰器
比如要给不同的基础平台部门增加验证权限/引入日志/函数执行时间统计时要用到
#装饰器演示 也叫修饰器 把函数的引用到参数传递到@的那个闭包函数里面去
def set_func(func):
	def call_func():
		print("---这是权限验证1----")
		print("---这是权限验证2----")
		func()
	return call_func#这上面时个闭包

@set_func
#这是等于test1=set_func(test1)
def test1():
	print("-----test1----")
test1()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值