python的装饰器

python的装饰器

1.闭包函数

    在了解装饰器之前,我们先理解下闭包函数的概念,python是一种面向对象的编程语言,在python中一切皆对象,这样就使得变量所拥有的属性,函数也同样拥有。这样我们就可以理解在函数内创建一个函数的行为是完全合法的。这种函数被叫做内嵌函数,这种函数只可以在外部函数的作用域内被正常调用,在外部函数的作用域之外调用会报错,例如:


外部函数outFunc()可以被调用,但是闭包函数inFunc()则无法调用。

闭包函数主要满足2点:1.函数内部定义的函数;2.引用了外部变量,但非全部全局变量。

2.装饰器

python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,

装饰器的返回值也是一个函数对象(函数的指针)。

装饰器函数的外部函数传入我要装饰的函数名字,返回经过修饰后函数的名字;内层函数(闭包)负责修饰被修饰函数。

从上面这段描述中我们需要记住装饰器的几点属性,以便后面能更好的理解:

  1. 实质: 是一个函数
  2. 参数:是你要装饰的函数名(并非函数调用
  3. 返回:是装饰完的函数名(也非函数调用
  4. 作用:为已经存在的对象添加额外的功能
  5. 特点:不需要对对象做任何的代码上的变动

2.1.函数的装饰器

   

     myfunc是我要装饰的函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象@outFunc相当于myfunc = outFunc(myfunc),为myfunc函数装饰并返回

2.2,带有参数的装饰器

 


我们可以在装饰器里面加入参书myfunc要与inFunc保持一致,即可传入参数。


也可以在在@outFunc上传入一个参数,执行的相当于 myfunc = outFunc('info')(myfunc),这样就可以传入对应的参数值。


也可以加上两个装饰器,方法跟一个装饰器的方式一样,执行是先第一个装饰器,然后调到第二个装饰器,执行函数。相当于myfunc = outFunc(Func(myfunc))

3.模块、方法、函数的关系

函数:将一组代码组织到一起,实现某种功能

模块:为实现某种逻辑将相关连的函数写在同一个文件里,使逻辑更清楚,这就是一个模块;在python中文件以.py 结尾,那这个.py文件就可以称之为模块

包:为了方便管理模块,python 中引入了包的概念;包是由关联的多个模块组成的目录,在每一个包下而都有一个__init__.py文件,这个文件必须存在,否则,Python就把这个目录当成普通目录,而不是一个包,init.py 可以是空文件,也可是有python代码,因为__init__.py本身就是一个模块

函数--》方法--》--模块--》包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值