python装饰器

本文介绍了Python装饰器的概念,详细阐述了装饰器的工作原理、执行时机以及如何判断变量作用域。通过实例解析了闭包和nonlocal关键字。此外,文章还探讨了功能完善的装饰器,包括如何使用functools.wraps以及装饰器的参数化。最后,提到了叠加装饰器的使用,并推荐了一些实用的内置和标准库装饰器。
摘要由CSDN通过智能技术生成

概述:

如果彻底弄懂装饰器的问题,建议您耐心读完整篇博客,相信您一定会有收获

装饰器是一个可以调用的对象,其参数是另外一个函数的函数名,函数装饰器可能会处理被装饰的函数,然后将其返回,或者将其替代为另外一个函数或者可调用的对象。

@decorate
def func():
	print "func"

上面是函数装饰器最简单的用法,其作用等同于下面的写法

def func():
	print "func"
func = decorate(target)

以下问题的答案有助于弄清楚并且掌握装饰器:

  1. python装饰器的一般语法及装饰器何时执行
    • 对于最简单的装饰器来讲,装饰器的形式是函数的嵌套,即内外两层函数
    • 外部函数的参数是被装饰函数的函数名,返回值为内部函数的函数名
    • 内部函数接受参数为被装饰函数的参数,返回值为被装饰函数的返回值
    • 函数装饰器在导入模块时立即执行
    # 最典型的函数装饰器形式
    >>>def decorater(func):
        	def inner(*args, **kwargs):
    		     return func()
    	    return inner
    
    # 装饰器的使用
    >>>@decorater
       def func():
    	    print("running func")
    
    >>>func()
    running func
    >>>func
    <function decotater/<local>.inner at 0x1041543832>
    
  2. python如何判断变量的作用域
    首先应该知道,函数中的变量分为L、E、G、B,其中E是Enclosing function locals,即嵌套函数内的变量,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值