码迷,mamicode.com
首页 > 其他好文 > 详细

9.1装饰器前提

时间:2018-03-05 11:23:23      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:闭包   装饰器基础前提   Python   

装饰器三个前提:

1. 作用域:原则:L E G B
2. 高阶函数:成立条件:①函数作为函数参数输入,或者②函数做为返回值输出;
3. 闭包:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)

def outer():
    x=10
    def inner():
        print(x)
    return inner

print(outer())
# <function outer.<locals>.inner at 0x00000068BEC8D158>
outer()()
# 10

f=outer()
f()
# 10

如上实例:inner就是内部函数,inner里引用了外部作用域的变量x(x是在外部作用域outer里面,但不是全局变量),则这个内部函数inner就是一个闭包。
闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境,当然这个环境可以有很多,不止一个简单的x。

大家对内容有任何问题,欢迎留言,定在第一时间解答,谢谢大家!

9.1装饰器前提

标签:闭包   装饰器基础前提   Python   

原文地址:http://blog.51cto.com/10777193/2082948

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