函数的闭包与装饰器
一、函数对象 python一切皆对象,所以函数也是对象,也可以当做数据被处理 函数可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二、函数闭包 Python 支持函数式编程,所以存在闭包,闭包是由函数及其相关的引⽤环境组合⽽成的实体 , ⼀句话: 闭包 = 函数+引⽤环境,函数式编程中,当内嵌函数体内引⽤到体外的变量 时, 将会连同这些变量(引⽤环境)和内嵌函数体, ⼀块打包成⼀个整体返回。 如果在一个函数的内部定义了另一个函数,外部的我们叫它为外函数,内部的我们叫它内函数,那么闭包就是在一个外函数中定义了一个内函数, 内函数里引用了外函数的临时变量,并且外函数的返回值是内函数的引用。 x = 1 def out_func(): x =2 def in_func(): print('in the in_func', x) return in_func f = out_func() f()# 通过调用__closure__属性查看闭包所包裹的外部变量print(f.__closure__, f.__closure__[0].cell_contents) """ in the in_func 2 (<cell at 0x00A27810: int object at 0x1D9DE320>,) 2""" 三、装饰器----闭包的运用 1 . 什么是装饰器