Py函数闭包

1. 定义

闭包是函数式编程的一个重要的语法结构,函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。

在面向过程编程中,我们见到过函数(function);

在面向对象编程中,我们见过对象(object);

函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability);

闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。

不同编程语言实现闭包的方式是不同的,python中闭包从表现形式上看,如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。

1
2
3
4
5
6
7
8
9
10
11
# 闭包 = 函数块 + 定义函数时的环境
def outer(x):
def inner(y):
return x+y

return inner

a = outer(2) # 定义外部环境
b = a(a(3)) # 2+2+3
print(b)

结合这段简单的代码和定义来说明闭包:

inner(y)就是这个内部函数,对在外部作用域(但不是在全局作用域)的变量进行引用:x就是被引用的变量,x在外部作用域outer里面,但不在全局作用域里,则这个内部函数inner就是一个闭包。

 再稍微讲究一点的解释是,闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境,当然这个环境可以有很多,不止一个简单的x

在函数outer中定义了一个inner函数,inner函数访问外部函数outer的(参数)变量,并且把inner函数作为返回值返回给outer函数。

参考链接

(60条消息) 理解Python中的闭包_Yeoman92的博客-CSDN博客_python函数闭包

作者

bd160jbgm

发布于

2021-09-18

更新于

2021-09-18

许可协议