码迷,mamicode.com
首页 > 编程语言 > 详细

python基础09--闭包,装饰器

时间:2019-11-04 17:20:08      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:结果   eve   imp   方法   原来   其它   fun   执行   show   

1.1 闭包

1、函数作为第一类对象,支持赋值给变量,作为参数传递给其它函数,作为其它函数的返回值,支持函数的嵌套,实现了__call__方法的类实例对象也可以当做函数被调用

2、s= func  -->执行函数的内存地址

   s =func() -->函数的调用

 

3、闭包:嵌套函数,内部函数调用外部函数的变量

         可以让一个局部变量常驻内存

def  outer():

  a=1             

  def inner():       #闭包函数

    pritn(a)

  print(inner.__closuer__)  #如果结果是cell 就是个闭包函数

 

4、常见闭包形式   在函数的外部使用内部的函数,既把内部的函数变为一个变量

def  outer():

  a=1 #常驻内存,防止其他程序改变这个变量

  def inner():       #闭包函数

    pritn(a)

    return inner

inn = outer()         #函数内存指向一个全局变量

inn()

 

1.2 装饰器

1、装饰器作用,不想修改函数的调用方式,但是还想再原来函数前后增加功能

2、开放封闭原则

3、装饰器的本质:闭包函数

技术图片
1 def wrapper(func):
2     def inner(*args,**kwargs):
3         #在被装饰的函数执行之前做的事
4         ret = func(*args,**kwargs)
5         #在被装饰的函数执行之后做的事
6         return ret
7     return inner                
wrapper

 

4、functools

from functools import wraps

def wrapper(func):

  @wraps(func)                         #不改变被装饰的函数的函数名

  def inner(*args,**kwargs):

    #在被装饰的函数执行之前做的事

    ret = func(*args,**kwargs)

    #在被装饰的函数执行之后做的事

    return ret

  return inner

 

5、带参数的装饰器 三层装饰器

python基础09--闭包,装饰器

标签:结果   eve   imp   方法   原来   其它   fun   执行   show   

原文地址:https://www.cnblogs.com/fbug/p/11793021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!